Javascript对象构造函数与对象文字

Ter*_* Li 17 javascript

可能重复:
创建对象 - 新对象或对象文字符号?
文字符号VS. 构造函数在JavaScript中创建对象

我正在阅读我的第一个Javascript教程.

我刚刚发现了两种创建JS对象的方法.

var person = new Object();
person.name = "Tom";
person.age = "17";
Run Code Online (Sandbox Code Playgroud)

var person = {};
person.name = "Tom";
person.name = "17"
Run Code Online (Sandbox Code Playgroud)

这两种对象创建方式有何不同?由于第二个看起来更简单,我们是否可以在任何条件下使用它?

Pla*_*ure 28

第二种语法不仅易于阅读,而且不仅可以在任何条件下工作,而且第一种语法可能无法在所有条件下工作:

function Object() {
    // Oh crap, we have redefined Object!
    return [];    // return an array because we are EVIL
}

var person = new Object();   // not what we think it is
Run Code Online (Sandbox Code Playgroud)

但是{},作为一个句法结构,可以免受这种邪恶的欺骗.

此外,对象文字符号可以在分析时部分优化,因为毕竟只有一个可以创建的对象类型.这可能会导致性能上升微不足道.

  • 最近我很好奇新vs {}的性能差异,所以我在jsperf上测试了这个.文字更快(至少在V8中).如果您想了解更多信息,可以在我的博客上看到结果:http://allthingscraig.com/blog/2013/01/02/creating-javascript-objects/ (3认同)
  • 你没有得到它.如果有人重新定义了Object构造函数,你仍然可以安全地使用`{}`. (3认同)