Поиск свойств объекта JavaScript — имеет ли значение синтаксис?

#javascript #syntax #properties #ecma262

#javascript #синтаксис #свойства #ecma262

Вопрос:

Это основной вопрос о языке JavaScript (ECMAScript), поэтому я заранее приношу извинения, если это дубликат (небольшой поиск не выявил мой точный вопрос).

В ECMAScript мы можем использовать две основные синтаксические формы для получения / установки свойств объекта, и они, похоже, имеют точно такой же эффект. Поскольку я не знаю лучше, я буду называть их обозначениями «свойство» и «ассоциативный массив»:

 var o = {};
// Property notation.
o.foo = 'Foo'; // (set)
o.foo; // => "Foo" (get)
// Associative array notation.
o['bar'] = 'Bar'; // (set)
o['bar']; // => "Bar" (get)
// They seem to be interchangeable.
o['foo']; // => "Foo"
o.bar; // => "Bar"
  

Есть ли какие-либо реальные различия между этими двумя обозначениями? Очевидно, что обозначение ассоциативного массива позволяет нам искать динамически генерируемые ключи в объекте (и принудительно приводит его аргумент к строке), тогда как обозначение свойства использует литерал, но это единственное отличие?

Комментарии:

1. Просто для добавления, нотация «ассоциативный массив» также позволяет вам иметь имена свойств, которые не являются собственными именами переменных, такими как obj["thisamp;that"] .

2. Да, а также, когда вы не хотите использовать переменную в качестве ключа, вы должны придерживаться обозначения массива object[myVar]

3. Еще одно отличие: синтаксис dot требует, чтобы имя свойства было допустимым идентификатором (например, не должно начинаться с числа и т.д.), Когда синтаксис [] допускает любое имя.

Ответ №1:

Вы правы; они идентичны.