在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
对象的Object.prototype.proto,proto属性引用与其内部原型相同的对象,该对象可能是对象,也可能是默认的 null。
Object.prototype.proto或失败的Object.getPrototypeOf ( Object.prototype )返回Object.prototype会更好吗?
这是个虫子吗?这样可以吗?为什么?
发布于 2013-08-21 05:43:55
原型链必须停在某个地方。
如果是Object.getPrototypeOf( Object.prototype ) === Object.prototype
,当JS引擎试图从原型中解析某些内容时,它将进入一个无限循环。
它会沿着原型链向上走到Object.prototype
,如果它没有找到它,它就会继续走到Object.prototype
,无限远。
实际上,如果您自己尝试这样做,您将得到一个错误:
> Object.prototype.__proto__ = Object.prototype
Error: Cyclic __proto__ value
请注意,您还可以通过调用[[Prototype]]
来创建不使用Object.create(null)
的自己的对象。
发布于 2021-09-27 01:05:39
虽然现在大多数浏览器都支持Object.prototype.__proto__
,但它的存在和精确行为仅在ECMAScript 2015规范中作为一个遗留特性进行标准化,以确保web浏览器的兼容性。为了获得更好的支持,使用Object.getPrototypeOf()代替。
链接:对象/对象/原
https://stackoverflow.com/questions/18359062
复制相似问题