在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 = basepage.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:{ } })