详解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自定义图片热区效果
Jul 21 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
Dec 10 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
Jun 19 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
Sep 24 Javascript
jQuery tagsinput在h5邮件客户端中应用详解
Sep 26 Javascript
Canvas实现放射线动画效果
Feb 15 Javascript
JS实现json的序列化和反序列化功能示例
Jun 13 Javascript
详解关于element el-button使用$attrs的一个注意要点
Nov 09 Javascript
js canvas实现画图、滤镜效果
Nov 27 Javascript
如何获取vue单文件自身源码路径
May 06 Javascript
JavaScript判断数据类型有几种方法及区别介绍
Sep 02 Javascript
VUE中的v-if与v-show区别介绍
Mar 13 Vue.js
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
mysql 性能的检查和优化方法
2009/06/21 PHP
Apache服务器无法使用的解决方法
2013/05/08 PHP
php中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
php数组冒泡排序算法实例
2016/05/06 PHP
PHP多维数组排序array详解
2017/11/21 PHP
php curl获取到json对象并转成数组array的方法
2018/05/31 PHP
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
JS中数组重排序方法
2016/11/11 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
2016/12/09 Javascript
bootstrap中的 form表单属性role="form"的作用详解
2017/01/20 Javascript
jQuery查找dom的几种方法效率详解
2017/05/17 jQuery
Webpack打包css后z-index被重新计算的解决方法
2017/06/18 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
Angular事件之不同组件间传递数据的方法
2018/11/15 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
angular多语言配置详解
2019/05/16 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
Python中使用多进程来实现并行处理的方法小结
2017/08/09 Python
Python 处理数据的实例详解
2017/08/10 Python
python向已存在的excel中新增表,不覆盖原数据的实例
2018/05/02 Python
使用Py2Exe for Python3创建自己的exe程序示例
2018/10/31 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
学期自我鉴定
2013/11/04 职场文书
土地转让协议书
2014/04/15 职场文书
新学期开学演讲稿
2014/05/24 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
2015年采购员工作总结
2015/04/27 职场文书
行政上诉状范文
2015/05/23 职场文书
电影地道战观后感
2015/06/04 职场文书
患者身份识别制度
2015/08/06 职场文书
2016优秀班主任个人先进事迹材料
2016/02/26 职场文书
深入理解go slice结构
2021/09/15 Golang
Python&Matlab实现樱花的绘制
2022/04/07 Python