【发布时间】:2013-08-23 22:07:04
【问题描述】:
在 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 developer documentation 只说:
对象的 proto 属性引用与其相同的对象 内部 [[Prototype]](通常称为“原型”),其中 可以是一个对象,或者在默认情况下 Object.prototype.proto, null .
Object.prototype.proto 或失败的 Object.getPrototypeOf (Object.prototype) 返回 Object.prototype 会更合适吗?
这是一个错误吗?这个可以吗?为什么?
【问题讨论】:
-
你为什么会这样?
-
[[GetProperty]]的第 4 步永远不会成立,因此寻找不存在的属性会导致Object.prototype无限循环。该步骤测试空原型,表示原型链的顶部;如果没有null原型,则链以循环结束。