在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()
当前回答
Var Obj = {};
这是最常用和最简单的方法。
使用
var Obj = new Obj()
不是首选。
不需要使用new Object()。
为了简单性、可读性和执行速度,请使用第一个方法(对象字面量方法)。
其他回答
对象
使用new Object()没有任何好处;-而{};可以使您的代码更紧凑,更可读。
对于定义空对象,它们在技术上是相同的。{}语法更短,更整洁(不像java那样),并且允许你立即内联填充对象,就像这样:
var myObject = {
title: 'Frog',
url: '/img/picture.jpg',
width: 300,
height: 200
};
数组
对于数组,同样,使用new Array()几乎没有任何好处;在[];-有一个小例外:
var emptyArray = new Array(100);
创建一个包含100项的长数组,所有槽位都包含undefined——这在某些情况下可能很好/有用(例如(new array(9))。join(‘Na-Na’)+‘蝙蝠侠!’)。
我的建议
不要使用new Object();-它比{}更笨重;看起来很傻。 始终使用[];-除非你需要快速创建一个预定义长度的“空”数组。
这本质上是一样的。你觉得什么方便就用什么。
它们有相同的最终结果,但我只想补充一点,使用文字语法可以帮助人们习惯JSON的语法(JavaScript文字对象语法的字符串化子集),所以这可能是一个很好的实践。
还有一件事:如果忘记使用new操作符,可能会出现细微的错误。因此,使用字面量将帮助您避免这个问题。
最终,这将取决于情况和偏好。
Var Obj = {};
这是最常用和最简单的方法。
使用
var Obj = new Obj()
不是首选。
不需要使用new Object()。
为了简单性、可读性和执行速度,请使用第一个方法(对象字面量方法)。
数组实例化性能
如果你想创建一个没有长度的数组:
Var arr = [];比var arr = new Array()快;
如果你想创建一个具有一定长度的空数组:
var arr = new Array(x);比var arr =[]快;Arr [x-1] = undefined;
有关基准测试,请单击以下内容:https://jsfiddle.net/basickarl/ktbbry5b/
然而,我不知道两者的内存占用,我可以想象,新的Array()占用了更多的空间。