详解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 三种方法实现获得和设置以及移除元素属性
Mar 20 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
May 12 Javascript
jQuery下拉友情链接美化效果代码分享
Aug 26 Javascript
基于JavaScript获取鼠标位置的各种方法
Dec 16 Javascript
浅谈JavaScript 标准对象
Jun 02 Javascript
node+express制作爬虫教程
Nov 11 Javascript
jQuery复合事件结合toggle()方法的用法示例
Jun 10 jQuery
vue中mint-ui的使用方法
Apr 04 Javascript
React 组件中的 bind(this)示例代码
Sep 16 Javascript
解决node-sass偶尔安装失败的方法小结
Dec 05 Javascript
uni-app如何页面传参数的几种方法总结
Apr 28 Javascript
通过实例解析vuejs如何实现调试代码
Jul 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
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
PHP调用全国天气预报数据接口查询天气示例
2019/02/20 PHP
一直复略了的一个问题,关于表单重复提交
2007/02/15 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
限制上传文件大小和格式的jQuery插件实例
2015/01/24 Javascript
解决JS请求服务器gbk文件乱码的问题
2015/10/16 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
Bootstrap fileinput文件上传预览插件使用详解
2017/05/16 Javascript
ionic 自定义弹框效果
2017/06/27 Javascript
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
2017/10/31 Javascript
用Webpack构建Vue项目的实践
2017/11/07 Javascript
全站最详细的Vuex教程
2018/04/13 Javascript
vue移动端轻量级的轮播组件实现代码
2018/07/12 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
python读取word文档的方法
2015/05/09 Python
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
Pytorch 实现数据集自定义读取
2020/01/18 Python
python简单实现最大似然估计&scipy库的使用详解
2020/04/15 Python
python中查看.db文件中表格的名字及表格中的字段操作
2020/07/07 Python
python中封包建立过程实例
2021/02/18 Python
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
Ajax的优点和缺点
2014/11/21 面试题
如何开发一个JQuery插件
2016/07/28 面试题
安全生产投入制度
2014/01/29 职场文书
党员大会主持词
2014/04/02 职场文书
作风大整顿心得体会
2014/09/10 职场文书
网络工程专业大学生求职信
2014/10/01 职场文书
小学教师个人总结
2015/02/05 职场文书
红高粱观后感
2015/06/10 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书
Win11 KB5015814遇安装失败 影响开始菜单性能解决方法
2022/07/15 数码科技