2016-08-26 2 views
2

Я не знаю, как читать этот кусок кода:Объекта обозначение доступа: квадратные скобки (Javascript)

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

Что я запутался является «Byname [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 и добавляет к объекту byName. byName[person.name] = person добавляет новый элемент к объекту byName. Ключ - person.name, а установленное значение - person. Другими словами, этот код позволяет быстро найти объект person с его именем. Последняя строка кода демонстрирует это в действии.

Смежные вопросы