我为什么要申报
var foo = {}
而不是
var foo = new Object();
如果它们相似,那么在JavaScript中这同样适用于
foo[0].bar = new Function(){ "return hello"};
在
中foo[0].bar = function(){return "hello"};
? 这是效率问题吗?它有所不同吗?
答案 0 :(得分:2)
我记得从w3fools.com阅读以下内容:
personObj=new Object();
这是对
new
关键字的错误和不必要的使用。他们应该是 使用和提倡对象文字语法({}
)来创建新语法 对象。
它没有说明为什么,只是我们应该这样做。
答案 1 :(得分:2)
实际上
var foo = {}
和
var foo = new Object();
做同样的事情(两个表达式都创建一个空的Object
)但最好使用更短的版本(object literal
),它需要更少的空间时间来编写,而另一个使用{{1}的东西您可以创建{/ 1}}并将值/属性分配给object literal
,如下所示
Object
但是使用person = {
property1 : "Hello"
};
,您需要先创建它,然后按如下方式分配值/属性
new Object()
在您的第二个示例(person = new Object();
person.property1 = "Hello";
)中存在差异,因为function vs new function
为new Function
,您可以查看this test here。
答案 2 :(得分:0)
没有效率增加或减少,它只是简单的使用? :对于if / else ..
我总是使用速记{}但是如果你想让初学者阅读你的代码,你可能想要使用新的Object()。
答案 3 :(得分:0)
唯一可能重要的是,如果你写一个动态生成这样的javascript的程序......或者你在大学里某个老师的写作似乎有一定的标准,但有时候并不合理。< / p>
答案 4 :(得分:0)
new Function()
构造函数并没有真正起作用。
它被称为:
var myFunc = new Function("param1", "param2", "message", "/*function-body-as-a-string*/ console.log(message); return param1 + \"=\" + param2;");
即:非常愚蠢,容易出错,愚蠢 - 慢(使用eval)和安全漏洞。 不要使用它。