Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Отрицательные свойства у объекта (https://javascript.ru/forum/misc/51106-otricatelnye-svojjstva-u-obekta.html)

zhurchik 24.10.2014 11:15

Отрицательные свойства у объекта
 
Приветствую.
Допустимо ли задавать отрицательные свойства тому или иному объекту?
К примеру:
var obj = {-1:"a",-2:"b",-3:"nnn"}

Если да, то нужно ли отрицательные цифры обрамлять кавычками или нет?

ksa 24.10.2014 11:25

Цитата:

Сообщение от zhurchik
Допустимо ли задавать отрицательные свойства тому или иному объекту?
К примеру:
var obj = {-1:"a",-2:"b",-3:"nnn"}

Такая запись уже дает ошибку синтаксиса...

ksa 24.10.2014 11:26

Цитата:

Сообщение от zhurchik
нужно ли отрицательные цифры обрамлять кавычками или нет?

Так же легко проверить...

var obj = {'-1':"a",'-2':"b",'-3':"nnn"};
alert(obj['-1']);

zhurchik 24.10.2014 11:39

ksa,
Я проверял, но я просто боюсь, что это может быть не по стандарту и, например, не работать в более менее старых браузерах.
Почему то у меня запись без кавычек (в хроме) не дает ошибки.

То есть, выходит что отрицательные имена свойствам допустимы?

ksa 24.10.2014 12:01

Цитата:

Сообщение от zhurchik
Почему то у меня запись без кавычек (в хроме) не дает ошибки.
То есть, выходит что отрицательные имена свойствам допустимы?

Я в Опере смотрел... Там ошибка синтаксиса...

zhurchik 24.10.2014 12:28

ksa,
Какая версия оперы? Вебкит?
Именно без кавычек выдает ошибку? А с кавычками нормально?

ksa 24.10.2014 14:46

Цитата:

Сообщение от zhurchik
Какая версия оперы?

О программе
Информация о версии
Версия: 12.17
Сборка: 1863
Платформа: Win32
Система: Windows 7
Цитата:

Сообщение от zhurchik
Именно без кавычек выдает ошибку?

Да
Цитата:

Сообщение от zhurchik
А с кавычками нормально?

Да

Sweet 24.10.2014 14:55

Собственно, обращаться-то можно и без кавычек:
var test = { "-1": -1, "[object Object]": {} };
test[-2] = -2;
alert([   test[-1], test[-2], test[{}]   ]);

Aetae 24.10.2014 15:39

Ключи объекта всегда строки. При обращении через квадратные скобки любая не-строка будет приведена к строке. Вот и всё.

danik.js 24.10.2014 16:33

Кстати, пустая строка - тоже строка, и может быть ключом:

var obj = {'': 'yes'};
alert(obj['']);


Часовой пояс GMT +3, время: 02:50.