javascript哈希键hasOwnProperty

javascript哈希键hasOwnProperty,javascript,Javascript,在Javascript中,为了在散列中查找所有值,我看到了以下代码: var myHash = {}; myHash['one'] = 1; myHash['two'] = 2; for (var key in myHash) { if (myHash.hasOwnProperty(key)) { //do something } } 在这里检查hasOwnProperty有什么意义?这一点是为了确保key是直接在myHash上定义的属性,而不是通过原型链继承的

在Javascript中,为了在散列中查找所有值,我看到了以下代码:

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

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

这一点是为了确保
key
是直接在
myHash
上定义的属性,而不是通过原型链继承的属性。在中使用
不会自动筛选出继承的属性,因此您可以自己进行筛选

但是,正如其他人所说,对于您的特定示例来说,这是不必要的


来源:

如果myHash是一个具有可枚举属性的对象的新实例,那么方法和其他继承属性将不会被列出,这可能更切题。

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

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