2012-09-20 72 views
1

在Javascript中找到散列所有值我看到下面的代碼:JavaScript的哈希鍵hasOwnProperty

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

什麼是這裏具有hasOwnProperty檢查點?

回答

2

重點是確保key是直接在myHash上定義的屬性,而不是通過原型鏈繼承的屬性。使用in不會自動過濾掉繼承的屬性,所以你可以自己做。

但是,正如其他人所說的那樣,您的特殊示例並不是必需的。

來源:hasOwnProperty on MDN

0

如果myHash是具有可枚舉屬性的對象的新實例,那麼方法和其他繼承屬性將不會被列出。

0

在這種特殊情況下沒有區別,但是如果myHash具有「」繼承的「屬性,那麼這些屬性也會循環,而不執行hasOwnProperty檢查。

這很可能是一種預防措施,甚至是一個複製粘貼,其中編碼器不用擔心檢查每一行是否必要,只是它的工作。