详解ES6 CLASS在微信小程序中的应用实例


Posted in Javascript onApril 24, 2020

ES6 CLASS基本用法

class Point {
 constructor(x, y) {
  this.x = x;
  this.y = y;
 }

 toString() {
  return '(' + this.x + ', ' + this.y + ')';
 }
}

1.1 constructor方法

constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。

class Point {
}

// 等同于
class Point {
 constructor() {}
}

上面代码中,定义了一个空的类Point,JavaScript 引擎会自动为它添加一个空的constructor方法。

1.2 类的实例

生成类的实例的写法,与 ES5 完全一样,也是使用new命令。前面说过,如果忘记加上new,像函数那样调用Class,将会报错。

class Point { // ...
} // 报错
var point = Point(2, 3); // 正确
var point = new Point(2, 3);

1.3 取值函数(getter)和存值函数(setter)

与 ES5 一样,在“类”的内部可以使用get和set关键字,对某个属性设置存值函数和取值函数,拦截该属性的存取行为。

class MyClass {
 constructor() {
  // ...
 }
 get prop() {
  return 'getter';
 }
 set prop(value) {
  console.log('setter: '+value);
 }
}

let inst = new MyClass();

inst.prop = 123;
// setter: 123

inst.prop
// 'getter'

1.4 this 的指向

类的方法内部如果含有this,它默认指向类的实例。但是,必须非常小心,一旦单独使用该方法,很可能报错。

class Logger {
 printName(name \= 'there') { this.print(\`Hello ${name}\`);
 }

 print(text) {
  console.log(text);
 }
}

const logger \= new Logger();
const { printName } \= logger;
printName(); // TypeError: Cannot read property 'print' of undefined

上面代码中,printName方法中的this,默认指向Logger类的实例。但是,如果将这个方法提取出来单独使用,this会指向该方法运行时所在的环境(由于 class 内部是严格模式,所以 this 实际指向的是undefined),从而导致找不到print方法而报错。

ES6 CLASS在微信小程序中的应用实例

//index.js

import {Card} from './Card/Card.js'; //引用
const app = getApp()
Page({
 //初始化数据
 data: {
  cards:{},
 },
 onLoad: function () {
  var url = "https://app.******.com/submit_ajax.ashx?action=APP_GetCardslist";
  var param = {uid:'37906'};
  var carcard = new Card(url,param);

  var that = this;
  //假如回调是同步的,可以使用下面的方法直接取值
  // var cardData = carcard.getCardData();
  carcard.getCardData((data)=>{
   //对数据源进行判断
   if (data.status == '1') {
    that.setData({
     cards: data.result
    })
    console.log(that.data.cards);
   } else {
    wx.showToast({
     title: data.msg,
     icon:'none'
    })
   }
  })
 },
 
})
var util = require("../../../utils/util.js");
//创建Card对象
class Card {
 //构造函数,此处提供了两个参数
 constructor(url,parameter) {
  this.url = url;
  this.parameter = parameter;
 }
 
 getCardData(cb) {
  this.cb = cb;
  util.http(this.url,this.parameter,"POST",this.processCarCardData.bind(this));
 }

 processCarCardData(data) {
  if (!data) {
   return;
  }
  this.cb(data);
 }

}
//class对象是个模块,使用export把对象输出出去
export {Card}
//util.js

function http(url,parameter,method, callback) {
 wx.request({
  url: url,
  method: method,
  data:{parameter},
  header: { "Content-type": "application/json" },
  success: function (res) {
   callback(res.data);
  },
  fail: function () {
   console.log("error");
  }
 });
}

module.exports \= {
 http:http
}

到此这篇关于详解ES6 CLASS在微信小程序中的应用实例 的文章就介绍到这了,更多相关小程序 ES6 CLASS内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
Mar 16 Javascript
关于query Javascript CSS Selector engine
Apr 12 Javascript
使用js判断控件是否获得焦点
Jan 03 Javascript
js获取判断上传文件后缀名的示例代码
Feb 19 Javascript
JS实现为表格动态添加标题的方法
Mar 31 Javascript
AngularJS中的指令全面解析(必看)
May 20 Javascript
AngularJS入门教程之REST和定制服务详解
Aug 19 Javascript
关于JS中二维数组的声明方法
Sep 24 Javascript
利用JavaScript实现拖拽改变元素大小
Dec 14 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
Jun 22 Javascript
js 根据对象数组中的属性进行排序实现代码
Sep 12 Javascript
vue 解决addRoutes多次添加路由重复的操作
Aug 04 Javascript
Vue中函数防抖节流的理解及应用实现
Apr 24 #Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
Apr 24 #Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
Apr 24 #Javascript
基于Vue实现微前端的示例代码
Apr 24 #Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
Apr 24 #Javascript
小程序开发之模态框组件封装
Apr 23 #Javascript
详解Vue3中对VDOM的改进
Apr 23 #Javascript
You might like
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
实例讲解PHP验证邮箱是否合格
2019/01/28 PHP
javascript实现的网页局布刷新效果
2008/12/01 Javascript
兼容FireFox 的 js 日历 支持时间的获取
2009/03/04 Javascript
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
查找iframe里元素的方法可传参
2013/09/11 Javascript
JavaScript加强之自定义callback示例
2013/09/21 Javascript
Jquery左右滑动插件之实现超级炫酷动画效果附源码下载
2015/12/02 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
2020/05/28 Javascript
Python实现手写一个类似django的web框架示例
2018/07/20 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
Python Subprocess模块原理及实例
2019/08/26 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
Python自动重新加载模块详解(autoreload module)
2020/04/01 Python
Matlab中plot基本用法的具体使用
2020/07/17 Python
html5弹跳球示例代码
2013/07/23 HTML / CSS
.NET remoting的两种通道是什么
2016/05/31 面试题
出国导师推荐信
2014/01/16 职场文书
兰兰过桥教学反思
2014/02/08 职场文书
《十六年前的回忆》教学反思
2014/02/14 职场文书
质量承诺书格式
2014/05/20 职场文书
孝老爱亲模范事迹材料
2014/05/25 职场文书
祖国在我心中演讲稿450字
2014/09/05 职场文书
投标承诺函格式
2015/01/21 职场文书
乐山大佛导游词
2015/02/02 职场文书
2015年高二班主任工作总结
2015/05/25 职场文书
担保书怎么写 ?
2019/04/22 职场文书
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS
如何利用Python实现n*n螺旋矩阵
2022/01/18 Python