为什么使用Object.prototype。
在JavaScript非标准属性__ proto__和函数Object.getPrototypeOf(...)中返回内部属性[[Prototype]]。
对于所有函数,属性'prototype'是Object.prototype的一个实例,例如:
Array.prototype instanceof Object//true
但是Object.prototype不是这样的:
Object.prototype.__proto__ === null //true
Object.getPrototypeOf( Object.prototype ) === null //true
mozilla开发者文档只说:
对象的proto属性引用与其内部的[[Prototype]](通常称为“原型”)相同的对象,该对象可能是一个对象,或者像Object.prototype的默认情况。 原型 ,null。
它会更适合Object.prototype。 原型或失败Object.getPrototypeOf(Object.prototype)返回Object.prototype?
这是一个错误? 这个可以吗? 为什么?
原型链必须停止在某个地方。
如果Object.getPrototypeOf( Object.prototype ) === Object.prototype
,当JS引擎试图从原型中解析某些东西时,它将陷入无限循环。
它会沿着原型链Object.prototype
,如果它没有在那里找到它,它会再次走向Object.prototype
,并且无限次地。
事实上,如果你自己尝试这样做,你会得到一个错误:
> Object.prototype.__proto__ = Object.prototype
Error: Cyclic __proto__ value
请注意,您也可以通过调用Object.create(null)
来创建不带[[Prototype]]
的自己的对象。