【问题标题】:From which version, IE can support Object.create(null)?IE从哪个版本开始支持Object.create(null)?
【发布时间】:2023-04-07 00:40:01
【问题描述】:

您可以通过多种方式在 JavaScript 中创建对象:

// creates an object which makes the Object, prototype of data.
var data1 = new Object(); 

// Object literal notation; Object still is the prototype of data2.
var data2 = {}; 

// anotherObject is now the prototype of data3.
var data3 = Object.create(anotherObject); 

/* data3 is an object which can be verified bye typeof operator, 
   however, it now has no prototype and you can 
   build everything from scratch. */
var data3 = Object.create(null); 

但是不知道哪个版本的IE支持最后一种方法,即Object.create(null)方法?

【问题讨论】:

  • 那么使用内联对象初始化器{} 或对象构造器new Object() 怎么样,不要因为IE 特定的行为而浪费时间?
  • @Matias,我想要一个没有原型的对象。 {}new Object() 无法实现这一目标。
  • 在 JavaScript 中你不能有一个没有原型的对象,因为这个脚本语言中对象的原型是原型! :D JavaScript 不是 OOP,它是“面向原型的”。
  • @Matias, turns out that you can,这正是我想要的。将null 作为我的对象的原型,或者换句话说,根本没有原型。

标签: javascript javascript-objects object-create


【解决方案1】:

查看维基百科的JavaScript version history。如果您发现 1.8.5 版本 - 这是您发现此对象工厂方法可用的语言版本 - Internet Explorer 的第 9 版是支持该版本的版本。

ECMAScript 5 Compatibility Table 也有此信息。

您也可以自己尝试使用 Microsoft 的 IE 虚拟机之一(可从here 获得,或者,对于非常旧版本的 IE,Multiple IE

【讨论】:

  • 感谢您的链接。但是,它没有讲对象工厂方法,我在IE8中检查了它。有效。 Object.create(null); 在 IE8 中工作。
  • 我不知道为什么它在你的 IE8 中有效,在我的 IE8 中无效。我检查了 MSDN。 “Internet Explorer 8 标准模式和 Quirks 模式不支持 Object.create 函数 (JavaScript)。”
  • @Andy 我真的不知道,因为当时我在回答 OP 我做了一些研究,我给了他这些链接,但我自己没有在 IE8 中尝试过。也许你是对的。
  • @Andy 或者我自己在 IE8 中检查过...但实际上我不记得几个月前我做了什么哈哈
  • ES5 Object.create 在 IE8 中不受支持,当然如果你在被黑浏览器或模拟模式下尝试它,你不会注意到它:kangax.github.io/es5-compat-table/#Object.create
猜你喜欢
  • 2013-01-28
  • 2013-12-03
  • 2018-04-07
  • 2018-04-27
  • 1970-01-01
  • 2014-04-09
  • 1970-01-01
  • 2010-12-18
  • 2011-05-18
相关资源
最近更新 更多