详解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 相关文章推荐
按钮JS复制文本框和表格的代码
Apr 01 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
Dec 12 Javascript
jquery果冻抖动效果实现方法
Jan 15 Javascript
jQuery增加自定义函数的方法
Jul 18 Javascript
JavaScript实现文字跟随鼠标特效
Aug 06 Javascript
Node.js中使用socket创建私聊和公聊聊天室
Nov 19 Javascript
Bootstrap每天必学之响应式导航、轮播图
Apr 25 Javascript
js重写方法的简单实现
Jul 10 Javascript
Vue.js学习之计算属性
Jan 22 Javascript
vue 引入公共css文件的简单方法(推荐)
Jan 20 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
Aug 06 Javascript
js序列化和反序列化的使用讲解
Jan 19 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 过滤器实现代码
2010/08/09 PHP
Zend Framework入门知识点小结
2016/03/19 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
基于jQuery的消息提示插件 DivAlert之旅(二)
2010/04/01 Javascript
说明你的Javascript技术很烂的五个原因
2011/04/26 Javascript
JavaScript 模式之工厂模式(Factory)应用介绍
2012/11/15 Javascript
教你用jquery实现iframe自适应高度
2014/06/11 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
原生js和jquery实现图片轮播淡入淡出效果
2015/04/23 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
详解AngularJS中module模块的导入导出
2015/12/10 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
js实现精确到秒的倒计时效果
2016/05/29 Javascript
JavaScript中this的用法实例分析
2016/12/19 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
jQuery Validate插件ajax方式验证输入值的实例
2017/12/21 jQuery
浅谈React深度编程之受控组件与非受控组件
2017/12/26 Javascript
js自定义trim函数实现删除两端空格功能
2018/02/09 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
微信小程序实现列表页的点赞和取消点赞功能
2018/11/02 Javascript
vuedraggable+element ui实现页面控件拖拽排序效果
2020/07/29 Javascript
vue+element项目中过滤输入框特殊字符小结
2019/08/07 Javascript
Vue常用的全选/反选的示例代码
2020/02/19 Javascript
Vue包大小优化的实现(从1.72M到94K)
2021/02/18 Vue.js
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
Python统计日志中每个IP出现次数的方法
2015/07/06 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
用python给csv里的数据排序的具体代码
2020/07/17 Python
解决python3.x安装numpy成功但import出错的问题
2020/11/17 Python
元旦联欢会主持词
2014/03/26 职场文书
销售内勤岗位职责
2014/04/15 职场文书
职业生涯规划书前言
2014/04/15 职场文书
在职证明书模板
2015/06/15 职场文书