1

在 Javascript 中查找哈希中的所有值,我看到了以下代码:

var myHash = {};
myHash['one'] = 1;
myHash['two'] = 2;
for (var key in myHash) {
    if (myHash.hasOwnProperty(key)) {
        //do something
    }
}

在这里检查 hasOwnProperty 有什么意义?

4

3 回答 3

2

关键是要确保它key是直接定义的属性,myHash而不是通过原型链继承的属性。Usingin不会自动过滤掉继承的属性,所以你可以自己做。

但是,正如其他人所说,您的特定示例没有必要。

来源: hasOwnProperty在 MDN 上

于 2012-09-20T16:26:36.787 回答
0

如果 myHash 是具有可枚举属性的对象的新实例,则可能更重要,因此不会列出方法和其他继承的属性。

于 2012-09-20T16:27:40.123 回答
0

在那种特殊情况下没有区别,但是如果 myHash 具有“继承”属性,那么这些属性也会被循环,而无需检查 hasOwnProperty。

这很可能是一种预防措施,甚至是一种复制粘贴,编码人员不必担心检查是否每一行都是必要的,只要它有效。

于 2012-09-20T16:28:21.340 回答