详解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 Moblie入门—hello world的示例代码学习
Jan 08 Javascript
jQuery JSON实现无刷新三级联动实例探讨
May 28 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
Jun 10 Javascript
用js通过url传参把数据从一个页面传到另一个页面
Sep 01 Javascript
在JavaScript中访问字符串的子串
Jul 07 Javascript
再谈JavaScript异步编程
Jan 27 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
Dec 01 Javascript
微信上传视频文件提示(推荐)
Nov 22 Javascript
vue2 中二级路由高亮问题及配置方法
Jun 10 Javascript
vue与django集成打包的实现方法
Nov 11 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
Mar 26 Javascript
JavaScript自定义超时API代码实例
Apr 30 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中simplexml_load_string函数使用说明
2011/01/01 PHP
PHP+MySQL之Insert Into数据插入用法分析
2015/09/27 PHP
jQuery点击弹出下拉菜单的小例子
2013/08/01 Javascript
JavaScript修改css样式style动态改变元素样式
2013/12/16 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
jquery简单图片切换显示效果实现方法
2015/01/14 Javascript
BootStrap扔进Django里的方法详解
2016/05/13 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
AngularJS表单和输入验证实例
2016/11/02 Javascript
JS去除重复并统计数量的实现方法
2016/12/15 Javascript
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
SVG动画vivus.js库使用小结(实例代码)
2017/09/14 Javascript
p5.js实现斐波那契螺旋的示例代码
2018/03/22 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
从零撸一个pc端vue的ui组件库( 计数器组件 )
2019/08/08 Javascript
微信小程序实现日历小功能
2020/11/18 Javascript
JS如何实现在弹出窗口中加载页面
2020/12/03 Javascript
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
2013/12/04 Python
Python解析网页源代码中的115网盘链接实例
2014/09/30 Python
将tensorflow的ckpt模型存储为npy的实例
2018/07/09 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
2020/02/14 Python
浅析Python __name__ 是什么
2020/07/07 Python
武汉世纪畅想数字传播有限公司 .NET笔试题
2015/06/13 面试题
工程造价自荐信
2013/10/09 职场文书
图书室管理制度
2014/01/19 职场文书
社区七一党员活动方案
2014/01/25 职场文书
预备党员承诺书
2014/03/25 职场文书
保护野生动物倡议书
2014/05/16 职场文书
119消防日活动总结
2014/08/29 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
罚款通知怎么写
2015/04/22 职场文书
Django 实现jwt认证的示例
2021/04/30 Python
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang