Day21 ES6 class

2019-04-23  本文已影响0人  JSleefat

ES6语法 class
constructor 构造器,不写明的话,会自动默认一个构造器
super,可当作函数或对象使用,
当子类扩展时,必须调用super(),因为子类没有this
super() 在这里相当于 A.prototype.constructor.call(this, props)

一些项目中的实例,可用class更方便的写插件,具有更好的可读性和可扩展性

import Toast from 'utils/toast.js';
import Wait from 'utils/wait.js';
import Device from 'utils/device.js';
/*
 * 计算等级
 * 修改时间:2019-4-22
 */
class CalculateRank {
  constructor(options) {
    this.wait = null;
    this.defaults = {
      //计算前回调
      beforeCallback: () => {
        this.showWait('加载中...');
      },
      //计算成功回调
      succeedCallback: (dataObj) => {
        this.hideWait();
      },
      //取消拍照回调
      cancelCallback: () => {
        this.hideWait();
      },
      //不支持回调
      notSupportCallback: () => {
        this.showToast('敬请期待');
      }
    }
    $.extend(this.defaults, options);
  }
  /**
   * 显示加载框
   * @param {string} text 文案
   */
  showWait(text) {
    this.wait = new Wait({
      content: text
    });
  }
  /**
   * 隐藏加载框
   */
  hideWait() {
    this.wait && this.wait.remove && this.wait.remove();
  }
  /**
   * toast提示
   * @param {string} text 文案
   * @param {function} callback 回调
   */
  showToast(text, callback) {
    new Toast({
      content: text,
      hideCallback: () => {
        callback && callback();
      }
    });
  }
  /**
   * 主要计算内容
   */
  mainCalculate() {
    this.defaults.beforeCallback();
    if (Device.getDeviceType() === "ios") {
      this.defaults.notSupportCallback();
    }
  }

}
export default CalculateRank;

参考:理解 es6 class 中 constructor 方法 和 super 的作用

上一篇 下一篇

猜你喜欢

热点阅读