深入理解 Object.create
语法
1
2 > Object.create(proto, [propertiesObject])
>
参数:
proto
新创建对象的原型对象。propertiesObject
可选。如果没有指定为 undefined,则是要添加到新创建对象的可枚举属性(即其自身定义的属性,而不是其原型链上的枚举属性)对象的属性描述符以及相应的属性名称。这些属性对应Object.defineProperties()
的第二个参数。返回值:
一个新对象,带着指定的原型对象和属性。
本质
我在复习继承的时候,发现寄生组合式继承和阮一峰老师的利用空对象作为中介的继承方式十分相似,简直是一模一样。
1 |
|
不难发现,他们都是用一个以父类的原型为原型的对象作为子类的原型。
去查了一下 Object.create
的 Polyfill,果不其然:
Polyfill最核心的部分:
1 |
|
Object.create
方法的实质是新建一个空的构造函数F
,然后让F.prototype
属性指向参数对象obj
,最后返回一个F
的实例,从而实现让该实例继承obj
的属性。