你不了解的JS笔记 - 第二部分 - 行为委托和class
相比于面向类,对象关联风格的代码有一些不同之处:
-
在[[Prototype]]委托中最好把状态保存在委托者而不是委托目标上
-
在类设计中,我们故意让父类和子类中都有同名方法,这样就可以利用重写的优势,在委托行为中我们会尽量避免在[[Prototype]]链的不同级别中使用相同的命名
这个设计模式要求尽量少使用容易被重写的通用方法名,提倡使用更有描述性的方法名,尤其是要写清相应对象行为的类型,这样做实际上可以创建出更容易理解和维护的代码,因为方法名更清晰
委托行为意味着某些对象在找不到属性或者方法引用时会把这个请求委托给另一个对象
无法在两个或两个以上互相委托的对象之间创建循环委托,如果把B关联到A然后试着把A关联到B,就会出错
class语法特点:
- 可以通过super()来实现相对多态,这样任何方法都可以引用原型链上层的同名方法
- class字面语法不能声明属性,只能声明方法
- 可以通过extends很自然的扩展对象类型,甚至是内置对象类型
- 但是本质是语法糖,没法真正实现类,并且super声明时是静态绑定而不是动态绑定的,所以定义了class后不容易对其动态修改

浙公网安备 33010602011771号