在JavaScript非标准属性__ proto__和函数Object.getPrototypeOf(...)中返回内部属性[[Prototype]]。
对于所有功能,属性'原型'是Object.prototype的一个实例,例如:
Array.prototype instanceof Object//true
但对于Object.prototype:
并非如此Object.prototype.__proto__ === null //true
Object.getPrototypeOf( Object.prototype ) === null //true
mozilla developer documentation只说:
对象的 proto 属性引用与其相同的对象 内部[[原型]](通常称为"原型"),其中 可以是一个对象,或者在默认情况下 Object.prototype。 proto ,null。
Object.prototype。 proto 或失败的Object.getPrototypeOf(Object.prototype)是否更适合返回Object.prototype?
这是一个错误吗?这个可以吗?为什么呢?
答案 0 :(得分:3)
原型链必须停在某处。
如果Object.getPrototypeOf( Object.prototype ) === Object.prototype
,JS引擎在尝试从原型中解析某些内容时会进入无限循环。
它会将原型链向上移动到Object.prototype
,如果它没有找到它,它会再次走到Object.prototype
, ad infinitum
事实上,如果你自己尝试这样做,你会收到一个错误:
> Object.prototype.__proto__ = Object.prototype
Error: Cyclic __proto__ value
请注意,您也可以通过调用[[Prototype]]
创建自己没有Object.create(null)
的对象。