这种用于创建对象的基于构造函数的语法有什么区别:
person = new Object()
…和这个字面语法:
person = { property1 : "Hello" };
看起来两者都做同样的事情,尽管 JSLint 更喜欢您使用对象文字表示法。
哪个更好,为什么?
他们都做同样的事情(除非有人做了一些不寻常的事情),除了你的第二个创建一个对象 并 为其添加一个属性。但是文字符号在源代码中占用的空间更少。可以清楚地识别正在发生的事情,因此使用new Object(),您实际上只是在输入更多内容,并且(理论上,如果没有被 JavaScript 引擎优化)执行了不必要的函数调用。
new Object()
这些
person = new Object() /*You should put a semicolon here too. It's not required, but it is good practice.*/ -or- person = { property1 : "Hello" };
从技术上讲,不要做同样的事情。第一个只是创建一个对象。第二个创建一个并分配一个属性。为了使第一个相同,您需要第二步来创建和分配属性。
某人可以做的“不寻常的事情”是隐藏或分配给默认Object全局:
Object
// Don't do this Object = 23;
在那种 非常不寻常的 情况下,new Object会失败但{}会起作用。
new Object
{}
在实践中,永远没有理由使用new Object而不是{}(除非你做过那件非常不寻常的事情)。