微信小程序对page页和component组件采用es6的class创建基类实现公共方法和数据的继承

  • 为了给页面或者组件添加统一的数据或者方法,不用每个页面都去写一遍,可以方便直接的调用数据或者方法;
  • 实质上是修改Page(obj) 或者Component(obj) 中obj;往obj中的data中添加属性数据;往obj或者obj.methods中添加方法
  • 可以直接通过this来获取数据或调用方法

在utils文件下新建baseClass文件夹,在该文件下新建三个基类js

 base.js文件  最基础的类

const api = {a:1,b:2}
const storage = {c:3,d:4}

//方法名称
const FnName = ['fn1','fn2']  

class base{
  constructor(obj,type){
    this.name = '类名是base'
    //添加公共数据
    obj['data'].api = api;
    obj['data'].storage = storage;
    
    //添加公共方法
    this.addPublicFn(obj,type);
  }
  addPublicFn(obj,type){
    FnName.forEach(fn=>{
      if(type==='page'){
        obj[fn] = this[fn];
      }else if(type==='component'){
        obj['methods'][fn] = this[fn];
      }
    })
  };
  fn1(){
    console.log('我是base类的方法fn1')
  };
  fn2(){
    console.log('我是base类的方法fn2')
  };
}

module.exports = base

 page.js  继承base类中的熟悉和方法

const base = require("./base.js");

//方法名称
const FnName = ['fn3']  

class myPage extends base{
  constructor(obj){
    super(obj,'page')

    //给myPage类添加统一私有数据
    obj['data']['abc'] = 'abc'
    //给myPage类添加统一私有方法
    this.addPagePublicFn(obj)

    console.log(obj)
    Page(obj)
  }
  addPagePublicFn(obj){
    FnName.forEach(fn=>{
      obj[fn] = this[fn];
    })
  };
  fn3(){
    console.log('我是myPage类的方法fn3')
  };
}
module.exports = myPage;

 component.js  继承base类的熟悉和方法

const base = require("./base.js");

//方法名称
const FnName = ['fn4']  

class myComponent extends base{
  constructor(obj){
    super(obj,'component')

    //给myComponent类添加统一私有数据
    obj['data']['def'] = 'def';
    //给myComponent类添加统一私有方法
    this.addComponentPublicFn(obj)

    console.log(obj)
    Component(obj);
  };
  addComponentPublicFn(obj){
    FnName.forEach(fn=>{
      obj['methods'][fn] = this[fn];
    })
  };
  fn4(){
    console.log('我是myComponent类的方法fn4')
  };
}
module.exports = myComponent;

在page页面和component中使用自定义的类 new一个新实例

//page
const myPage = require("../../utils/baseClass/page.js");
new myPage({
    data:{
    
    }
})


//component
const myComponent = require("../utils/baseClass/component.js");
new myComponent({
    data:{
    
    }
})

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值