在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操作符,可能会出现细微的错误。因此,使用字面量将帮助您避免这个问题。
最终,这将取决于情况和偏好。
其他回答
对象和数组文字语法{}/[]是在JavaScript 1.2中引入的,因此在Netscape Navigator 4.0之前的版本中不可用(并将产生语法错误)。
我的手指仍然默认为new Array(),但我已经很老了。值得庆幸的是,网景3不是今天许多人不得不考虑的浏览器……
var objectA = {}
更快,而且根据我的经验,更常用,所以最好采用“标准”并节省一些输入。
它们有相同的最终结果,但我只想补充一点,使用文字语法可以帮助人们习惯JSON的语法(JavaScript文字对象语法的字符串化子集),所以这可能是一个很好的实践。
还有一件事:如果忘记使用new操作符,可能会出现细微的错误。因此,使用字面量将帮助您避免这个问题。
最终,这将取决于情况和偏好。
我相信{}在这里的一个Javascript视频中被推荐为一个很好的编码约定。新对于伪经典继承是必要的。var obj = {};Way有助于提醒您,这不是一个经典的面向对象语言,而是一个原型语言。因此,只有在使用构造函数时才真正需要new。例如:
var Mammal = function (name) {
this.name = name;
};
Mammal.prototype.get_name = function () {
return this.name;
}
Mammal.prototype.says = function() {
return this.saying || '';
}
然后它是这样使用的:
var aMammal = new Mammal('Me warm-blooded');
var name = aMammal.get_name();
使用{}而不是new Object的另一个优点是你可以用它来做json风格的对象字面量。
Var Obj = {};
这是最常用和最简单的方法。
使用
var Obj = new Obj()
不是首选。
不需要使用new Object()。
为了简单性、可读性和执行速度,请使用第一个方法(对象字面量方法)。