在Javascript中找到散列所有值我看到下面的代碼:JavaScript的哈希鍵hasOwnProperty
var myHash = {};
myHash['one'] = 1;
myHash['two'] = 2;
for (var key in myHash) {
if (myHash.hasOwnProperty(key)) {
//do something
}
}
什麼是這裏具有hasOwnProperty檢查點?
在Javascript中找到散列所有值我看到下面的代碼:JavaScript的哈希鍵hasOwnProperty
var myHash = {};
myHash['one'] = 1;
myHash['two'] = 2;
for (var key in myHash) {
if (myHash.hasOwnProperty(key)) {
//do something
}
}
什麼是這裏具有hasOwnProperty檢查點?
重點是確保key
是直接在myHash
上定義的屬性,而不是通過原型鏈繼承的屬性。使用in
不會自動過濾掉繼承的屬性,所以你可以自己做。
但是,正如其他人所說的那樣,您的特殊示例並不是必需的。
如果myHash是具有可枚舉屬性的對象的新實例,那麼方法和其他繼承屬性將不會被列出。
在這種特殊情況下沒有區別,但是如果myHash具有「」繼承的「屬性,那麼這些屬性也會循環,而不執行hasOwnProperty檢查。
這很可能是一種預防措施,甚至是一個複製粘貼,其中編碼器不用擔心檢查每一行是否必要,只是它的工作。