小编典典

“ new Object()”和对象文字符号之间有什么区别?

javascript

创建对象的基于构造函数的语法之间有什么区别:

person = new Object()

…以及这种文字语法:

person = {
    property1 : "Hello"
};

尽管JSLint偏爱您使用对象文字表示法,但两者似乎都做相同的事情。

哪一个更好,为什么?


阅读 349

收藏
2020-04-25

共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而不是{}(除非您已经完成了非常不寻常的事情)。

2020-04-25