Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

属性访问方式的性能差异

  JavaScript的对象是可以随便添加或删除属性的,很多时候会用hash存储。但有时候在初始化对象完成后我们并不会再添加其它属性,那么这些属性就变得固定。对于使用字面量索引或属性词法来访问的方式就可以在作用域中被直接优化为一个单独的引用。
  当我们通过字面量索引或属性词法来访问属性时,属性就会被视为一个固定引用。因此使用字面量索引或属性词法的方式可以有效地提高性能。可以做一下测试来验证 <style>* {font:14px/22px Consolas,微软雅黑;}</style>
<p><input type="button" value="o.n" /> 属性词法</p>
<p><input type="button" value="o['n']" /> 字面量索引</p>
<p><input type="button" value="o[(0,'n')]" /> 表达式值索引</p>
<p><input type="button" value="o[n]" /> 变量索引</p>
<script>
document.onclick=function(e){
  if(!(e=e.target.value))return;
  new Function("e","\
    var o={},n='n';\
    console.time(e);\
    for(var i=0;i<1E8;i++)"+e+"=i;\
    console.timeEnd(e);\
  ")(e);
};
</script>

  这个测试几乎在所有浏览器上都可以得到类似的结果。所以把访问频率高的属性尽可能地优化为属性词法的方式可以带来很大的性能提升。
网名:
54.144.24.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^