详解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 相关文章推荐
15 个 JavaScript Web UI 库
May 19 Javascript
JavaScript接口实现代码 (Interfaces In JavaScript)
Jun 11 Javascript
原生javascript图片自动或手动切换示例附演示源码
Sep 04 Javascript
javascript计时器事件使用详解
Jan 07 Javascript
js报$ is not a function 的问题的解决方法
Jan 20 Javascript
jQuery左右滚动支持图片放大缩略图图片轮播代码分享
Aug 26 Javascript
详解 javascript中offsetleft属性的用法
Nov 11 Javascript
Javascript技术难点之apply,call与this之间的衔接
Dec 04 Javascript
javascript实现下拉提示选择框
Dec 29 Javascript
用js实现博客打赏功能
Oct 24 Javascript
vue中实现图片和文件上传的示例代码
Mar 16 Javascript
json.stringify()与json.parse()的区别以及用处
Jan 25 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在Web开发领域的优势
2006/10/09 PHP
PHP中10个不常见却非常有用的函数
2010/03/21 PHP
php中选择什么接口(mysql、mysqli)访问mysql
2013/02/06 PHP
php文件夹与文件目录操作函数介绍
2013/09/09 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
IE8 下的Js错误HTML Parsing Error...
2009/08/14 Javascript
javascript 二维数组的实现与应用
2010/03/16 Javascript
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
2015/04/17 Javascript
JQuery包裹DOM节点的方法
2015/06/11 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
bootstrap confirmation按钮提示组件使用详解
2017/08/22 Javascript
详解js的视频和音频采集
2018/08/09 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
js实现GIF动图分解成多帧图片上传
2019/10/24 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
Python中3种内建数据结构:列表、元组和字典
2014/11/30 Python
Python中逗号的三种作用实例分析
2015/06/08 Python
浅谈Python 中整型对象的存储问题
2016/05/16 Python
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
详解Python的数据库操作(pymysql)
2019/04/04 Python
网易有道2017内推编程题 洗牌(python)
2019/06/19 Python
用python给自己做一款小说阅读器过程详解
2019/07/11 Python
Michael Kors香港官网:美国奢侈品品牌
2019/12/26 全球购物
艺术系大学生毕业个人自我评价
2013/09/19 职场文书
十八大标语口号
2014/10/09 职场文书
行政助理岗位职责
2015/02/10 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
今日说法观后感
2015/06/08 职场文书
八月迷情观后感
2015/06/11 职场文书
如何用JS实现网页瀑布流布局
2021/04/24 Javascript
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android