由于 javascript 中的对象是关联映射(其他编程语言中的 HashMap),因此执行下面的代码
for (var prop in object) {
if (prop === someConcreteProperty) {
// some decision
break;
}
}
无论如何,比虚拟属性查找慢
if (typeof object.someConcreteProperty != 'undefined') {
// some decision
}
Edits:
我正在考虑代码的性能,例如:
for ( var prop in obj)
if (obj[prop] === someAnonymousMethod) {
// I need that property name for my need
return obj.prop();
}
属性查找时间会是两倍吗
obj.prop()
or more?
Thanks.
这可以通过经验进行测试:
<script language="javascript">
alert("Initialising test object...");
var obj = new Object();
for (var i=0; i<1000000; i++) obj["prop"+i] = i;
alert("Initialised. Doing Test.");
var d1 = (new Date()).getTime();
needle = obj["prop"+(i-1)]; // last object
for (var prop in obj) {
if (obj === needle) {
// some decision
break;
}
}
var ms1 = ((new Date()).getTime()) - d1;
alert("Method 1 took "+ms1+"ms.")
var d2 = (new Date()).getTime();
if (typeof obj["prop"+(i-1)] != 'undefined') {
// some decision
}
var ms2 = (new Date()).getTime() - d2;
alert("Method 2 took "+ms2+"ms.")
</script>
方法 1 比方法 2 花费的时间要长得多。这并不奇怪,因为执行方法 2 所需的所有计算都包含在方法 1 中,而且还要多得多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)