详解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建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
Feb 26 Javascript
JQuery+Ajax无刷新分页的实例代码
Feb 08 Javascript
JavaScript 表单处理实现代码
Apr 13 Javascript
jQuery实现表格行上下移动和置顶效果
Jun 05 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
Jun 23 Javascript
基于jquery实现在线选座订座之影院篇
Aug 24 Javascript
jQuery常用知识点总结以及平时封装常用函数
Feb 23 Javascript
js阻止冒泡和默认事件(默认行为)详解
Oct 20 Javascript
详解Next.js页面渲染的优化方案
Jan 27 Javascript
js的继承方法小结(prototype、call、apply)(推荐)
Apr 17 Javascript
vue移动端实现手机左右滑动入场动画
Jun 17 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
Oct 26 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 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
laravel清除视图缓存的代码
2019/10/23 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
IE6弹出“已终止操作”的解决办法
2010/11/27 Javascript
更优雅的事件触发兼容
2011/10/24 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
2013/05/23 Javascript
DOM节点删除函数removeChild()用法实例
2015/01/12 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
node.js中express-session配置项详解
2017/05/31 Javascript
JS轮播图实现简单代码
2021/02/19 Javascript
JS实现带动画的回到顶部效果
2017/12/28 Javascript
如何安装控制器JavaScript生成插件详解
2018/10/21 Javascript
vue+php实现的微博留言功能示例
2019/03/16 Javascript
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
python os.path模块常用方法实例详解
2018/09/16 Python
python+mysql实现个人论文管理系统
2019/10/25 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
2020/03/19 Python
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
Mountain Hardwear官网:攀岩服装和户外装备
2019/09/26 全球购物
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
2015/06/22 面试题
优秀员工获奖感言
2014/03/01 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
小学校园文化建设汇报材料
2014/08/19 职场文书
医院领导班子查摆问题对照检查材料思想汇报
2014/10/08 职场文书
单位委托书
2014/10/15 职场文书
初三毕业评语
2014/12/26 职场文书
2015年行政部工作总结
2015/04/28 职场文书
Apache POI的基本使用详解
2021/11/07 Servers
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL
Nginx的基本概念和原理
2022/03/21 Servers
Win11 Beta 预览版 22621.575 和 22622.575更新补丁KB5016694发布(附更新内容大全)
2022/08/14 数码科技