我被告知所有的对象都需要一个原型,但是似乎可以用null创建一个原型。
var obj= Object.create(null);那么上面的对象原型是少了还是有一些无法访问的原生对象作为它的原型,null并不意味着它没有原型,而仅仅意味着它没有一个作者创建的原型?
发布于 2016-06-03 04:02:02
它没有原型(或者,原型是null)。从用Object.prototype(null)创建的对象中没有任何属性可访问。
观察到Object.getPrototypeOf(Object.create(null))的结果是null。
发布于 2016-06-03 04:08:37
所有对象都有一个内部[原型]槽,可以是null,也可以是另一个对象。
[Prototype]为null的对象的一些示例确实是Object.prototype和Object.create(null)。
9.1普通物体内部方法和内部插槽 所有普通对象都有一个名为[Prototype]的内槽。这个内槽的值要么是空,要么是一个对象,用于实现继承。[Prototype]对象的数据属性是为了获取访问而继承的(作为子对象的属性可见),而不是用于set访问。对于get访问和set access,访问器属性都是继承的。
https://stackoverflow.com/questions/37605605
复制相似问题