为什么使用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]]的自己的对象。

链接地址: http://www.djcxy.com/p/27237.html

上一篇: Why Object.prototype.

下一篇: Multiple inheritance/prototypes in JavaScript