在JavaScript中有两种不同的方法来创建一个空对象:
var objectA = {}
var objectB = new Object()
脚本引擎处理它们的方式有什么不同吗?有理由使用其中一种而不是另一种吗?
同样,也可以使用不同的语法创建一个空数组:
var arrayA = []
var arrayB = new Array()
在JavaScript中有两种不同的方法来创建一个空对象:
var objectA = {}
var objectB = new Object()
脚本引擎处理它们的方式有什么不同吗?有理由使用其中一种而不是另一种吗?
同样,也可以使用不同的语法创建一个空数组:
var arrayA = []
var arrayB = new Array()
当前回答
它们有相同的最终结果,但我只想补充一点,使用文字语法可以帮助人们习惯JSON的语法(JavaScript文字对象语法的字符串化子集),所以这可能是一个很好的实践。
还有一件事:如果忘记使用new操作符,可能会出现细微的错误。因此,使用字面量将帮助您避免这个问题。
最终,这将取决于情况和偏好。
其他回答
这本质上是一样的。你觉得什么方便就用什么。
数组实例化性能
如果你想创建一个没有长度的数组:
Var arr = [];比var arr = new Array()快;
如果你想创建一个具有一定长度的空数组:
var arr = new Array(x);比var arr =[]快;Arr [x-1] = undefined;
有关基准测试,请单击以下内容:https://jsfiddle.net/basickarl/ktbbry5b/
然而,我不知道两者的内存占用,我可以想象,新的Array()占用了更多的空间。
var objectA = {}
更快,而且根据我的经验,更常用,所以最好采用“标准”并节省一些输入。
好吧,只有两种不同的方法来做同样的事情!一个叫对象字面值,另一个是函数构造函数!
但继续读下去,我有几件事想和大家分享:
使用{}使您的代码更具可读性,而创建Object实例或其他内置函数不推荐…
另外,Object函数作为函数可以获得参数,比如Object(params)…但是{}是JavaScript中开始一个对象的纯粹方式…
使用object literal可以让你的代码看起来更干净,对其他开发人员来说更容易阅读,而且它与JavaScript的最佳实践是内联的……
虽然Javascript中的Object几乎可以是任何东西,{}只指向Javascript对象,为了测试它的工作方式,请在Javascript代码或控制台中执行以下操作:
var n = new Object(1); //Number {[[PrimitiveValue]]: 1}
令人惊讶的是,它正在创建一个数字!
var a = new Object([1,2,3]); //[1, 2, 3]
这是创建Array!
var s = new Object('alireza'); //String {0: "a", 1: "l", 2: "i", 3: "r", 4: "e", 5: "z", 6: "a", length: 7, [[PrimitiveValue]]: "alireza"}
以及String的奇怪结果!
所以如果你正在创建一个对象,建议使用object literal,有一个标准的代码,避免任何类似上述的代码事故,而且在性能上使用{}在我的经验是更好的!
Var Obj = {};
这是最常用和最简单的方法。
使用
var Obj = new Obj()
不是首选。
不需要使用new Object()。
为了简单性、可读性和执行速度,请使用第一个方法(对象字面量方法)。