业务类中编程思维
用Object.assgin() 方法把任意多源对象的方法和可枚举属性复制到目标对象中
将data方法中的属性和方法复制到methods中,使得可直接用this 指向访问data中定义的属性方法
|
|
一个例子
假设我们创建一个业务主类,主类方法接受一些子类参数。主类中做一些特殊处理,大概的开发套路。在父类方法中传入子类
首先并判断子类当中固有的data和methods 是否为方法或者对象,然后进对象合并,并且在父类中新创建一个对应属性,名字通过参数赋值,之后父类就可以访问子类中的方法了
|
|
子类中访问父类的属性,创建初始化函数,创建并通过$global 实现合并,并且指定(使其设置为不可枚举)子对象访问属性
Object.keys(this); 是返回可枚举属性的数组
Object.defineProperty(obj,prop,enumerable) obj当前对象,prop当前属性名称,enumerable设置是否可枚举(默认false)
多属性形式
12345678 Object.defineProperties(obj, {'property1': {enumerable: false},'property2': {enumerable: false}});
|
|
在子类中可能改变this.$global 对象的值,所以我们把全局$global对象设置为冻结对象Object.freeze(this.$global),使其不可修改,删除
|
|
使用prototype原形 扩展父类方法或属性,实例可以访问,例如写一个初始化方法init()
|
|
继承
团队协作开发,组长开发一个基类,组员开发相关业务子类,实现继承基类
|
|
使用Function 扩展方法,使所有的方法都可以调用
|
|
使子类可以通过一个类似php的parent方法调用父类的方法,增加一个抵挡函数,判断是否是父类的实例才可以调用父类的构造函数,避免重复调用
|
|
使用模块化开发方式
相关阅读链接 走进node (初级)
一个例子 设计一个订单模块,主订单包含订单号,下单id,订单数量,和下单时间,子订单(一对多),使用工厂模式开发
基类 BaseOrder.js
使用延展操作符 对参数进行赋值
index.js (入口文件)
另一种写法,使用rest运算符对参数进行解构
另一种写法,用对象进行解构(兼容性不好,但是推荐使用)
|
|
未完待续…