Я так запутался в Object в JavaScript - PullRequest
0 голосов
/ 24 ноября 2018

Я новичок в JavaScript, но я знаком с Python.Я пытаюсь выяснить разницу между словарем в Python и объектом в JS.

Насколько я знаю, ключ в словаре в Python должен быть определен заранее, но он может быть неопределеннымв объекте в JS.Однако меня смущают эти случаи:

var n = 'name';
var n2 = n;
var person = {n: 'mike'};

person.n    # 'mike'
person['n'] # 'mike'
person[n2]  # undefined
person.n2   # undefined
person['name']  # undefined
person.'name'  # undefined

Я настолько растерялся, что почему эти три переменные n, n2 и name не равны, потому что по сравнению с этим в Python:

n = 'name'
n2 = n
person = {n:'mike'}

person[n]  # 'mike'
person[n2] # 'mike'
person['name'] # 'mike'

Я полагаю, это может быть связано с тем, что в Python n и n2 оба указывают на уникальный строковый объект 'name', поэтому они одинаковы.Но может ли кто-нибудь объяснить мне механизм, заложенный в JS?

1 Ответ

0 голосов
/ 24 ноября 2018

Когда вы присваиваете:

var person = {n: 'mike'};

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

var person = {[n]: 'mike'};

Для получения дополнительной информации о скобочных обозначениях см. вычисляемое свойство .

В JavaScriptиспользование кавычек для свойства такое же без использования кавычки:

var person = {n: 'mike'};
var person = {'n': 'mike'}; // same as above

Но если вы определяете свойство как предоставление пробела:

var person = {my property: 'mike'}; // invalid

В этом случае вам необходимо использоватьцитата:

var person = {'my property': 'mike'};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...