在 Javascript 中查找哈希中的所有值,我看到了以下代码:
var myHash = {};
myHash['one'] = 1;
myHash['two'] = 2;
for (var key in myHash) {
if (myHash.hasOwnProperty(key)) {
//do something
}
}
在这里检查 hasOwnProperty 有什么意义?
在 Javascript 中查找哈希中的所有值,我看到了以下代码:
var myHash = {};
myHash['one'] = 1;
myHash['two'] = 2;
for (var key in myHash) {
if (myHash.hasOwnProperty(key)) {
//do something
}
}
在这里检查 hasOwnProperty 有什么意义?
关键是要确保它key
是直接定义的属性,myHash
而不是通过原型链继承的属性。Usingin
不会自动过滤掉继承的属性,所以你可以自己做。
但是,正如其他人所说,您的特定示例没有必要。
如果 myHash 是具有可枚举属性的对象的新实例,则可能更重要,因此不会列出方法和其他继承的属性。
在那种特殊情况下没有区别,但是如果 myHash 具有“继承”属性,那么这些属性也会被循环,而无需检查 hasOwnProperty。
这很可能是一种预防措施,甚至是一种复制粘贴,编码人员不必担心检查是否每一行都是必要的,只要它有效。