Путаница в Javascript точечный метод объекта - PullRequest
1 голос
/ 23 марта 2020

В Javascript все ключи в свойстве являются строками, верно? Другими словами,

этот код:

var object = {
car: 'tesla'
};

и этот код одинаковы:

var object = {
'car': 'tesla'
};

Но почему я могу получить доступ к ключу car, используя: object["car"], но не используя это: object[car]

Другими словами, зачем мне помещать ключ с именем car в кавычки, если ключ с именем car уже был превратился в строку?

Я прочитал эту тему , но не смог получить четкий ответ по этой конкретной проблеме. Надеюсь, кто-то поможет.

1 Ответ

4 голосов
/ 23 марта 2020

Внутри инициализатора объекта идентификатор обрабатывается как имя свойства.

Значение, используемое в скобочных обозначениях средства доступа к свойству , это выражение.

Если вы используете идентификатор в выражении, он обрабатывается как имя переменной.

Поскольку вы можете использовать любое выражение в скобочных обозначениях, вы можете динамически генерировать значение:

object[function_that_returns_car(argument_from_local_scope)]

object[`string with ${interpolated} value`]

object[i_from_for_loop]

… что делает скобочную запись полезной.

Сравните с точечная запись , где вы должны использовать идентификатор и этот идентификатор * напрямую обрабатывается как имя свойства:

object.car
...