的区别,优点或缺点是什么
var obj = {};
VS
var obj = new Object();
我所知道的是第二个例子需要更长的时间。有什么真正的好处吗?
**编辑**
function loop() {
var start = (new Date()).getTime();
for(var i = 0; i < 1000000; ++i) {
//var b = {}; // takes ~548ms on my machine
var b = new Object(); // takes ~287ms on my machine
}
trace((new Date()).getTime() - start);
setTimeout(loop, 1);
}
loop();
如果您在var b = {};
和var b = new Object();
之间切换,您会看到性能差异。他们与我的回忆以及我在问题中提到的内容相反。
答案 0 :(得分:3)
据我所知,它们是等价的。通过“第二个例子需要更长的时间”,我假设你的意思是只是及时输入语句,并且可能是一个可能无法估量的时间来评估 - 但执行时间应该相等。
答案 1 :(得分:3)
有些测试告诉我,new Object()
的速度要快一些,但这只是{}
语法的比较,而不是您可能想要做的其他任务。
测试功能:
function time(amount:int, test:Function):Number
{
var average:Number = 0;
var averages:Array = [];
for(var n:int = 0; n<amount; n++)
{
var start:Number = getTimer();
test();
averages[averages.length] = getTimer() - start;
}
for each(var a:Number in averages) average += a;
return average / averages.length;
}
然后我们的两个测试科目:
function short():void
{
for(var i:int = 0; i<1000000; i++) var obj:Object = {};
}
function long():void
{
for(var i:int = 0; i<1000000; i++) var obj:Object = new Object();
}
结果:
trace(time(5, short)); // 278.6
trace(time(5, long)); // 153.6
使用new Object()
大约有45%的速度提升,但您会注意到总时间仍然不明显(即使是1,000,000次迭代)。
就个人而言,我还是会坚持使用{}
语法,以简化其他个人偏好的原因。