【问题标题】:Is there a super prototype "Object" of all objects in javascript? What is that Object(first letter in capital) in javascriptjavascript中是否有所有对象的超级原型“对象”? javascript中的那个对象(大写的第一个字母)是什么
【发布时间】:2012-01-18 14:28:37
【问题描述】:

javascript中是否存在所有对象的超级原型“对象”? javascript中的那个对象(大写的第一个字母)是什么。在javascript中Object是所有对象的原型,就像Object类是Java中所有类的超类。

【问题讨论】:

  • 这应该是一个问题,紧接着是一个答案?

标签: javascript object prototype


【解决方案1】:

我想你的意思是,如果你在 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]] 为空的对象)。
【解决方案2】:

是的,Object 是原型层次结构中最顶层的对象。但是,不建议污染Object.prototype,因为此类属性会显示在例如for-in 循环中(如果您不使它们不可枚举)。另请注意,在 IE 8 及以下版本中,宿主对象不继承自 Object:document.body instanceof Object === false

【讨论】:

    【解决方案3】:

    只需在控制台中输入Object.prototype。你会看到类似

    要检验 javascript 中的所有函数都扩展自 Object 的假设,就像 Java 中的所有类扩展自 Object 一样,请参阅以下内容:

    所以答案是肯定的。

    但请记住,javascript 使用原型继承,而在 javascript 中,所有对象都在其原型上获取 Object 的方法,就像在 Java 中一样,其他相似之处将不成立。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-08
      相关资源
      最近更新 更多