Існують дві різні позначення для доступу до властивостей об'єкта
- Dot позначення: myObj.prop1
- Кронштейн позначення: myObj [ "prop1"]
Позначення крапок швидко і легко, але потрібно використовувати чітко ім'я власності. Відсутня підміна, змінні тощо.
Нотація дужок відкрита. Він використовує рядок, але ви можете створити рядок, використовуючи будь-який законний js-код. Ви можете вказати рядок як буквальний (хоча в цьому випадку позначення крапок читатимуться легше) або використовувати змінну або обчислити якимось чином.
Таким чином, це все встановити myObj властивість з ім'ям prop1 до значення Hello :
// quick easy-on-the-eye dot notation
myObj.prop1 = "Hello";
// brackets+literal
myObj["prop1"] = "Hello";
// using a variable
var x = "prop1";
myObj[x] = "Hello";
// calculate the accessor string in some weird way
var numList = [0,1,2];
myObj[ "prop" + numList[1] ] = "Hello";
Підводні камені:
myObj.[xxxx] = "Hello"; // wrong: mixed notations, syntax fail
myObj[prop1] = "Hello"; // wrong: this expects a variable called prop1
tl; dnr : Якщо ви хочете обчислити чи посилатись на ключ, ви повинні використовувати позначення дужок . Якщо ви використовуєте ключ явно, то використовуйте позначення крапок для простого чіткого коду.
Зауважте: є кілька інших хороших і правильних відповідей, але я особисто знайшов їх трохи стислими, виходячи з низького рівня знайомства з JS під час вигадки. Це може бути корисно для деяких людей.