nodejs继承的用法
对于上一篇,最后不明白的那块内容,今天在看Object.assign
这个Polyfill实现里面有个方法defineProperty
方法,里面也有
|
|
解释如下:
configurable
当且仅当这个属性描述符值为 true 时,该属性可能会改变,也可能会被从相应的对象删除。默认为 false。
enumerable
true 当且仅当该属性出现在相应的对象枚举属性中。默认为 false。
数据描述符同时具有以下可选键值:value
与属性相关的值。可以是任何有效的 JavaScript 值(数值,对象,函数等)。默认为 undefined。
writable
true 当且仅当可能用 赋值运算符 改变与属性相关的值。默认为 false。
另外,Object.create也有说明,create方法的第二个参数的说明:
propertiesObject
一个对象值,可以包含若干个属性,属性名为新建对象的属性名,属性值为那个属性的属性描述符对象.
第一次接触node继承,是在使用events.EventEmitter
时接触的。
代码如下:
|
|
为什么需要Call父级构造函数呢?inherits方法无法继承父级构造函数的成员方法和变量吗?
是的,inherits方法只是把子级的构造函数的原型指向了父级的原型,也就是说,不是父级实例化后的对象
所以没有父级构造函数的成员。
这样的好处是继承的方法只是继承了父级在prototype可以共享的方法和属性,降低了原型链的继承查找。
call则直接指向了父级构造函数,当实例化子级构造函数时,将父级的构造过程运用于子级。
和之前讲的混合方式有点类似,但是从出发点来讲,
更清晰的区分了冒充和原型的信息共享。
|
|