详解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创建快捷方式的简单实例
Aug 09 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
May 12 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
Aug 23 Javascript
JS实现iframe自适应高度的方法示例
Jan 07 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
Apr 07 Javascript
浅谈webpack4.x 入门(一篇足矣)
Sep 05 Javascript
Vue 权限控制的两种方法(路由验证)
Aug 16 Javascript
微信小程序实现写入读取缓存详解
Aug 30 Javascript
LayUI动态设置checkbox不显示的解决方法
Sep 02 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
Sep 12 Javascript
谈一谈vue请求数据放在created好还是mounted里好
Jul 27 Javascript
vue使用localStorage持久性存储实现评论列表
Apr 14 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
php 中include()与require()的对比
2006/10/09 PHP
用PHP实现递归循环每一个目录
2010/08/08 PHP
php生成缩略图示例代码分享(使用gd库实现)
2014/01/20 PHP
PHP PDOStatement::fetch讲解
2019/01/31 PHP
豆瓣网的jquery代码实例
2008/06/15 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
js 异步操作回调函数如何控制执行顺序
2013/12/24 Javascript
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
2014/09/01 Javascript
html的DOM中document对象images集合用法实例
2015/01/21 Javascript
JavaScript日期时间与时间戳的转换函数分享
2015/01/31 Javascript
分享一些常用的jQuery动画事件和动画函数
2015/11/27 Javascript
Bootstrap轮播图学习使用
2017/02/10 Javascript
详解vue 实例方法和数据
2017/10/23 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
2019/04/29 Javascript
微信网页登录逻辑与实现方法
2019/04/29 Javascript
浅析Vue 中的 render 函数
2020/02/28 Javascript
JQuery实现折叠式菜单的详细代码
2020/06/03 jQuery
vue缓存之keep-alive的理解和应用详解
2020/11/02 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
Windows下搭建python开发环境详细步骤
2020/07/20 Python
把csv文件转化为数组及数组的切片方法
2018/07/04 Python
python对html过滤处理的方法
2018/10/21 Python
pygame游戏之旅 python和pygame安装教程
2018/11/20 Python
Python查找文件中包含中文的行方法
2018/12/19 Python
对python指数、幂数拟合curve_fit详解
2018/12/29 Python
pthon贪吃蛇游戏详细代码
2019/01/27 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
《天安门广场》教学反思
2014/04/23 职场文书
领导班子四风查摆对照检查材料思想汇报
2014/10/05 职场文书
2015年党支部公开承诺书
2015/01/22 职场文书
创先争优个人总结
2015/03/04 职场文书
小学中队活动总结
2015/05/11 职场文书
交通处罚决定书
2015/06/24 职场文书
2019年共青团工作条例最新版
2019/11/12 职场文书
ajax请求前端跨域问题原因及解决方案
2021/10/16 Javascript
gojs实现蚂蚁线动画效果
2022/02/18 Javascript