小编典典

`new Object()` 和对象字面量表示法有什么区别?

all

这种用于创建对象的基于构造函数的语法有什么区别:

person = new Object()

…和这个字面语法:

person = {
    property1 : "Hello"
};

看起来两者都做同样的事情,尽管 JSLint 更喜欢您使用对象文字表示法。

哪个更好,为什么?


阅读 108

收藏
2022-06-15

共1个答案

小编典典

他们都做同样的事情(除非有人做了一些不寻常的事情),除了你的第二个创建一个对象
为其添加一个属性。但是文字符号在源代码中占用的空间更少。可以清楚地识别正在发生的事情,因此使用new Object(),您实际上只是在输入更多内容,并且(理论上,如果没有被 JavaScript 引擎优化)执行了不必要的函数调用。

这些

person = new Object() /*You should put a semicolon here too.  
It's not required, but it is good practice.*/ 
-or-

person = {
    property1 : "Hello"
};

从技术上讲,不要做同样的事情。第一个只是创建一个对象。第二个创建一个并分配一个属性。为了使第一个相同,您需要第二步来创建和分配属性。

某人可以做的“不寻常的事情”是隐藏或分配给默认Object全局:

// Don't do this
Object = 23;

在那种 非常不寻常的 情况下,new Object会失败但{}会起作用。

在实践中,永远没有理由使用new Object而不是{}(除非你做过那件非常不寻常的事情)。

2022-06-15