详解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 相关文章推荐
javascript中巧用“闭包”实现程序的暂停执行功能
Apr 04 Javascript
javascript hasFocus使用实例
Jun 29 Javascript
JavaScript中的变量定义与储存介绍
Dec 31 Javascript
js改变embed标签src值的方法
Apr 10 Javascript
jquery插件qrcode在线生成二维码
Apr 26 Javascript
Jquery数字上下滚动动态切换插件
Aug 08 Javascript
JavaScript基于原型链的继承
Jun 22 Javascript
AngularJS 过滤器(自带和自建)详解
Sep 19 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
Oct 05 Javascript
干货!教大家如何选择Vue和React
Mar 13 Javascript
微信小程序 button样式设置为图片的方法
Jun 19 Javascript
JS的深浅复制详细
Oct 16 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
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
php面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
Yii视图CGridView列表用法实例分析
2016/07/12 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
php报错502badgateway解决方法
2019/10/11 PHP
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
JQuery 控制内容长度超出规定长度显示省略号
2014/05/23 Javascript
jquery实现动态画圆
2014/12/04 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
基于replaceChild制作简单的吞噬特效
2015/09/21 Javascript
移动端滑动插件Swipe教程
2016/10/16 Javascript
jquery获取input type=text中的值的各种方式(总结)
2016/12/02 Javascript
详解angular中如何监控dom渲染完毕
2017/01/03 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
2020/09/05 Javascript
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
python控制台显示时钟的示例
2014/02/24 Python
Python判断操作系统类型代码分享
2014/11/22 Python
Python实现的简单hangman游戏实例
2015/06/28 Python
Linux下将Python的Django项目部署到Apache服务器
2015/12/24 Python
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
python 梯度法求解函数极值的实例
2019/07/10 Python
python 日志 logging模块详细解析
2020/03/31 Python
python退出循环的方法
2020/06/18 Python
python实现粒子群算法
2020/10/15 Python
校园新闻广播稿
2014/01/10 职场文书
离婚协议书该怎么写
2014/10/04 职场文书
小学国庆节活动总结
2015/03/23 职场文书
护士2015年终工作总结
2015/04/29 职场文书
2015年扶贫帮困工作总结
2015/05/20 职场文书
学生安全责任协议书
2016/03/22 职场文书
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
2023/05/08 MySQL