详解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 相关文章推荐
快速排序 php与javascript的不同之处
Feb 22 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
Jan 15 Javascript
jQuery利用sort对DOM元素进行排序操作
Nov 07 Javascript
基于webpack.config.js 参数详解
Mar 20 Javascript
浅谈vue中.vue文件解析流程
Apr 24 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
Sep 10 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
Apr 17 Javascript
使用JavaScript获取Django模板指定键值数据
May 27 Javascript
react ant Design手动设置表单的值操作
Oct 31 Javascript
nuxt引入组件和公共样式的操作
Nov 05 Javascript
解决vue项目本地启动时无法携带cookie的问题
Feb 06 Vue.js
Vue2项目中对百度地图的封装使用详解
Jun 16 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三层结构(上) 简单三层结构
2010/07/04 PHP
php去除换行(回车换行)的三种方法
2014/03/26 PHP
php实现的用户查询类实例
2015/06/18 PHP
JavaScript 学习笔记二 字符串拼接
2010/03/28 Javascript
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
javascript之学会吝啬 精简代码
2010/04/25 Javascript
JavaScript实现页面滚动图片加载(仿lazyload效果)
2011/07/22 Javascript
javascript 快速排序函数代码
2012/05/30 Javascript
图片img的src不变让浏览器重新加载实现方法
2013/03/29 Javascript
轻松学习jQuery插件EasyUI EasyUI表单验证
2015/12/01 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
jquery实现界面无刷新加载登陆注册
2016/07/30 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
使用Python开发windows GUI程序入门实例
2014/10/23 Python
Python实现的简单hangman游戏实例
2015/06/28 Python
Python的语言类型(详解)
2017/06/24 Python
有趣的python小程序分享
2017/12/05 Python
Python文本处理之按行处理大文件的方法
2018/04/09 Python
python实现在函数图像上添加文字和标注的方法
2019/07/08 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
Python 50行爬虫抓取并处理图灵书目过程详解
2019/09/20 Python
CSS3 倾斜的网页图片库实例教程
2009/11/14 HTML / CSS
html5定位获取当前位置并在百度地图上显示
2014/08/22 HTML / CSS
联想墨西哥官方网站:Lenovo墨西哥
2016/08/17 全球购物
Unix如何在一行中运行多个命令
2015/05/29 面试题
心得体会开头
2014/01/01 职场文书
试用期员工考核制度
2014/01/22 职场文书
2014年图书管理员工作总结
2014/12/01 职场文书
优秀团员事迹材料
2014/12/25 职场文书
2015年医院护理部工作总结
2015/04/23 职场文书
医院志愿者活动总结
2015/05/06 职场文书
Nginx下配置Https证书详细过程
2021/04/01 Servers
为Java项目添加Redis缓存的方法
2021/05/18 Redis
Matplotlib可视化之添加让统计图变得简单易懂的注释
2021/06/11 Python