Как JavaScript добавить свойство объекта?

Я читал вопросы JavaScript, где я нашел этот кусок кода

var a={},
    b={key:'b'},
    c={key:'c'};

a[b] = 123;
a[c] = 456;

console.log(a[b]);      // o/p - 456

Кто-нибудь может заставить меня понять этот код, почему и как он печатает 456?

И я думаю, что мы можем использовать точку, т.е. a.b = 123 и строка a['b'] = 123 подход к добавлению свойства к объекту.

2 ответа

И то и другое b а также c разрешить в ту же строку ([object Object]). Следовательно, вы перезаписываете один и тот же ключ.

И я думаю, что мы можем использовать точку, то есть ab = 123 и строку a['b'] = 123, чтобы добавить свойство к объекту.

Да можно, но a['b'] сильно отличается от a[b], Первый преобразуется в ключ со строковым значением, как показано на рисунке ('b'), где, как и другое, будет зависеть от строкового значения переменной b (в этом случае [object Object]).

Для реального использования содержимого объекта вы можете использовать строковую версию.

var a = {},
    b = { key: 'b' },
    c = { key: 'c' };

a[JSON.stringify(b)] = 123;
a[JSON.stringify(c)] = 456;

console.log(a[JSON.stringify(b)]);   

Другие вопросы по тегам