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