【发布时间】:2012-01-18 14:28:37
【问题描述】:
javascript中是否存在所有对象的超级原型“对象”? javascript中的那个对象(大写的第一个字母)是什么。在javascript中Object是所有对象的原型,就像Object类是Java中所有类的超类。
【问题讨论】:
-
这应该是一个问题,紧接着是一个答案?
标签: javascript object prototype
javascript中是否存在所有对象的超级原型“对象”? javascript中的那个对象(大写的第一个字母)是什么。在javascript中Object是所有对象的原型,就像Object类是Java中所有类的超类。
【问题讨论】:
标签: javascript object prototype
我想你的意思是,如果你在 Object.prototype 中放置一些东西,那么 everything 是否可以访问它,因为它们都扩展了 Object。答案很简单,是的。
如果您在Object.prototype 中放置一些内容,那么当您创建一个XMLHttpRequest 的实例时,您将能够访问您设置的内容。像这样:
Object.prototype.foo = 'bar';
var req = new XMLHttpRequest();
console.log(req.foo); // bar
【讨论】:
Object.prototype 是一个 [[Prototype]] 为空的对象。同样,在 ES5 中,Object.create(null) 创建了一个类似的对象(即 [[Prototype]] 为空的对象)。
是的,Object 是原型层次结构中最顶层的对象。但是,不建议污染Object.prototype,因为此类属性会显示在例如for-in 循环中(如果您不使它们不可枚举)。另请注意,在 IE 8 及以下版本中,宿主对象不继承自 Object:document.body instanceof Object === false。
【讨论】:
只需在控制台中输入Object.prototype。你会看到类似
要检验 javascript 中的所有函数都扩展自 Object 的假设,就像 Java 中的所有类扩展自 Object 一样,请参阅以下内容:
所以答案是肯定的。
但请记住,javascript 使用原型继承,而在 javascript 中,所有对象都在其原型上获取 Object 的方法,就像在 Java 中一样,其他相似之处将不成立。
【讨论】: