#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:
Вы правы; они идентичны.