ada*_*Lev 8 javascript optimization performance
我很好奇检查JS对象(用作字典)是否具有给定属性的最快方法.
我对结果感到困惑.亲眼看看:http://jsperf.com/object-membership-check-speed/6
在Chrome中,in关键字方法比点语法慢96%.在Firefox中,它也慢了约80%.IE显示速度慢了约50%
我勒个去?难道我做错了什么?我想象"in"关键字会被优化,因为它甚至不需要获取值,它只返回一个布尔值.但显然我是完全错的.
他们不一样.
obj.prop将检查属性是否不falsy(不null,undefined,0,"",false).
prop in obj检查对象中是否存在属性(包括它的原型链)
最后你有obj.hasOwnProperty('prop')哪些检查对象是否拥有prop它自己的属性(不能是一个固有的属性).
例
var obj = { prop: "" };
obj.prototype = { inhereted: true };
if ( obj.prop ); // false
if ( prop in object ); // true
if ( inhereted in object ); // true
if ( obj.hasOwnProperty('prop') ); // true
if ( obj.hasOwnProperty('inhereted') ); // false
Run Code Online (Sandbox Code Playgroud)
我认为只要你不是一次做数百万次检查,性能就不应该成为问题.如果你真的想要最快的方式,你可以使用:
if ( obj.prop != null )
Run Code Online (Sandbox Code Playgroud)
哪个检查财产是否是null或undefined.在这种形式中,其他虚假的价值喜欢""或0不能干涉,你仍然是超级高效的.
| 归档时间: |
|
| 查看次数: |
2876 次 |
| 最近记录: |