在JavaScript中有两种不同的方法来创建一个空对象:

var objectA = {}
var objectB = new Object()

脚本引擎处理它们的方式有什么不同吗?有理由使用其中一种而不是另一种吗?

同样,也可以使用不同的语法创建一个空数组:

var arrayA = []
var arrayB = new Array()

当前回答

var objectA = {}

更快,而且根据我的经验,更常用,所以最好采用“标准”并节省一些输入。

其他回答

对象和数组文字语法{}/[]是在JavaScript 1.2中引入的,因此在Netscape Navigator 4.0之前的版本中不可用(并将产生语法错误)。

我的手指仍然默认为new Array(),但我已经很老了。值得庆幸的是,网景3不是今天许多人不得不考虑的浏览器……

对象

使用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();-它比{}更笨重;看起来很傻。 始终使用[];-除非你需要快速创建一个预定义长度的“空”数组。

Var Obj = {};

这是最常用和最简单的方法。

使用

var Obj = new Obj() 

不是首选。

不需要使用new Object()。

为了简单性、可读性和执行速度,请使用第一个方法(对象字面量方法)。

var objectA = {}

更快,而且根据我的经验,更常用,所以最好采用“标准”并节省一些输入。

是的,有区别,它们不一样。的确,你会得到相同的结果,但引擎的工作方式是不同的。一个是对象字面值,另一个是构造函数,这是javascript中创建对象的两种不同方式。

var objectA = {} //This is an object literal

var objectB = new Object() //This is the object constructor

在JS中,所有东西都是对象,但你应该注意new object()的以下内容:它可以接收一个参数,并根据该参数创建一个字符串、一个数字或只是一个空对象。

例如:new Object(1),将返回一个数字。new Object("hello")将返回一个字符串,这意味着对象构造函数可以根据参数将对象创建委托给其他构造函数,如string, number等…当你管理动态数据来创建对象时,记住这一点是非常重要的。

许多作者建议,当您可以使用某种文字符号来代替时,不要使用对象构造函数,在这种情况下,您将确保您所创建的是您期望在代码中拥有的东西。

我建议你进一步阅读javascript中文字符号和构造函数之间的区别,以获得更多细节。