Есть два разных обозначения для доступа к свойствам объекта
- Точечная запись: 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 на лету. Это может быть полезно для некоторых людей.