@warriorkg
Убил своего сына

Объекты в JavaScript. Почему выводится 1, а не 0?

var obj = {'1': 0, 1: 1, 0: 2};

alert(obj['1']);
Почему выводиться значение свойства 1, а не свойства '1' ?
Мы же обращаемся к свойству '1', а не 1.
  • Вопрос задан
  • 3605 просмотров
Решения вопроса 4
Lynn
@Lynn
nginx, js, css
Потому что ключ это всегда строка. Любые другие типы приводятся к строке
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
Потому, что obj['1'] и obj[1] это один и тот-же элемент
8OgClQ9.png
Ответ написан
Комментировать
miraage
@miraage
Старый прогер
https://developer.mozilla.org/en-US/docs/Web/JavaS...


Property names must be strings. This means that non-string objects cannot be used as keys in the object. Any non-string object, including a number, is typecasted into a string via the toString method.


В общем, учите матчасть. :)
Ответ написан
Комментировать
Как писали выше, при создании объектного литерала имя свойства можно указывать как в кавычках так и без. Поэтому var obj = {'one': 0, one: 1, 0: 2} то же самое что:

var obj = {};
obj.one = 0;
И потом вы переписываете свойство:
obj.one = 1; (или obj[one] = 1; или obj['one'] = 1; все то же самое и все указывает на одно и то же свойство)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы