2016-08-26 45 views
2

我不知道如何讀這段代碼:對象訪問符號:括號(使用Javascript)

var byName = {}; 
ancestry.forEach(function(person){ byName[person.name] = person;]); 
console.log(byName["Phil"]); 

我感到困惑的是「綽號[person.name] =人」部分代碼。

1)byName [person.name]是什麼意思?爲什麼使用方括號表示而不是點表示法?

2)爲什麼它等於人(byName [person.name] = person),這是如何工作的?

ps:ancestry是一個JSON文件,可以在我電子書的沙箱中找到。

回答

2

點符號使用標識符。 x.foo獲取foo屬性。

方括號表示法需要一個字符串。 x["foo"]獲取foo屬性。

該字符串可以來自任何表達式。

var person = {}; 
person.name = "foo"; 
x[person.name] 

...得到foo財產

byName[person.name] = person;剛剛打破了以「byName對象上創建一個當前人的名字命名的新的財產,使其價值目前人對象」

+0

太糟糕了,這被標記爲一個重複,你的回答遠好於鏈接重複。 –

2

此代碼通過ancestry循環並添加到對象byNamebyName[person.name] = person正在向byName對象添加新元素。關鍵是person.name和設定值是person。換句話說,這段代碼允許通過它的名字快速查找對象person。最後一行代碼證明了這一點。

相關問題