2

我为什么要申报

var foo = {}

代替

var foo = new Object();

如果它们相似,在 JavaScript 中?是否同样适用于

foo[0].bar = new Function(){ "return hello"};

就像在

foo[0].bar = function(){return "hello"};

? 是效率问题吗?有区别吗?

4

5 回答 5

2

我记得从w3fools.com阅读了以下内容:

personObj=new Object();

这是对new关键字的错误和不必要的使用。他们应该使用并提倡使用对象字面量语法 ( {}) 来创建新对象。

它没有说为什么,只是说我们应该。

于 2012-07-21T00:00:56.733 回答
2

实际上

var foo = {}

var foo = new Object();

做同样的事情(两个表达式都创建一个空Object的),但最好使用较短的版本(object literal),它需要更少的空间时间来编写,另一件事是使用object literal您可以创建和分配值/属性给 anObject如下

person = {
    property1 : "Hello"
};

但是使用new Object()您需要先创建它,然后按如下方式分配值/属性

person = new Object();
person.property1 = "Hello";

在您的第二个示例 ( function vs new function) 中存在差异,因为new Functionslower可以在此处查看此测试

于 2012-07-21T00:06:09.413 回答
0

不,没有任何效率增加或减少,它只是像使用的简写?:如果/否则..

我总是使用简写 {},但如果您打算让初学者阅读您的代码,您可能需要使用 new Object()。

于 2012-07-20T23:59:20.290 回答
0

唯一可能重要的是,您是否编写了一个动态生成此类 javascript 的程序……或者您为大学中的某位老师写作,该老师似乎有某种标准,有时不太有意义。

于 2012-07-21T00:01:16.633 回答
0

new Function()构造函数实际上并不是这样工作的。

它被称为:

var myFunc = new Function("param1", "param2", "message", "/*function-body-as-a-string*/ console.log(message); return param1 + \"=\" + param2;");

即:非常愚蠢,容易出错,愚蠢缓慢(使用评估)和安全漏洞。不要使用它。

于 2012-07-21T00:17:05.877 回答