点运算符比下标表示法更快吗?
var obj = {x: '5'};
obj.x = 'some value';
obj['x'] = 'some value';
答案 0 :(得分:6)
没有令人难以置信的担忧。 window
或eval
之后的变量显着变慢。
答案 1 :(得分:3)
这可能是过时的信息,但它是一个影响至少旧版Safari版本的声明。 来自O'Reilly的Writing Efficient JavaScript:
对于大多数浏览器,使用点几乎没有区别 对象属性访问(data.count)和括号表示法的表示法 (数据[ “计数”])。一个例外是Safari,其中括号表示法 比点符号慢得多。这甚至适用于此 Safari 4及更高版本使用Nitro JavaScript引擎。
看起来http://jsperf.com/已被删除 - 它显示为Website Disabled
,但是使用Qt4中的嵌入式WebKit引擎,看起来这个陈述是正确的,使用此测试:
var t = new Date().getTime();
var x = { c: 123 };
for (var i = 0; i < 5000000; i++)
x['c'] += 2;
document.write(( new Date().getTime() - t ) + '; value ' + x.c);
var t = new Date().getTime();
var x = { c: 123 };
for (var i = 0; i < 5000000; i++)
x.c += 2;
document.write(( new Date().getTime() - t ) + '; value ' + x.c);
使用x['c']
大约需要4秒钟,x.c
运行大约3秒钟。
目前的Firefox和Chrome似乎没有区分这两者。