Как 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)]);