Отрицательные свойства у объекта
Приветствую.
Допустимо ли задавать отрицательные свойства тому или иному объекту? К примеру: var obj = {-1:"a",-2:"b",-3:"nnn"} Если да, то нужно ли отрицательные цифры обрамлять кавычками или нет? |
Цитата:
|
Цитата:
var obj = {'-1':"a",'-2':"b",'-3':"nnn"}; alert(obj['-1']); |
ksa,
Я проверял, но я просто боюсь, что это может быть не по стандарту и, например, не работать в более менее старых браузерах. Почему то у меня запись без кавычек (в хроме) не дает ошибки. То есть, выходит что отрицательные имена свойствам допустимы? |
Цитата:
|
ksa,
Какая версия оперы? Вебкит? Именно без кавычек выдает ошибку? А с кавычками нормально? |
Цитата:
Информация о версии Версия: 12.17 Сборка: 1863 Платформа: Win32 Система: Windows 7 Цитата:
Цитата:
|
Собственно, обращаться-то можно и без кавычек:
var test = { "-1": -1, "[object Object]": {} }; test[-2] = -2; alert([ test[-1], test[-2], test[{}] ]); |
Ключи объекта всегда строки. При обращении через квадратные скобки любая не-строка будет приведена к строке. Вот и всё.
|
Кстати, пустая строка - тоже строка, и может быть ключом:
var obj = {'': 'yes'}; alert(obj['']); |
zhurchik, где вы такой хрени начитались? Отрицательное свойство это например null, false, undefined, то есть когда мы пишем !var и плевать на тип отрицательности. Все остальные свойства "положительные". Блиин... чего только не узнаешь. Имя свойства может быть любым, в том числе с черточкой впереди, с пробелами посреди и на русском языке в том числе.
ob['я русский и люблю водк']=true; |
Для практических задач черточку можно да, юзать как минус. Тогда еще можно obj['sqrt']=2; obj['max'], obj['pow']=0.5, etc.
|
zhurchik, никогда не ориентируйся на один браузер - всегда проверяй сразу в нескольких. Причем советую ознакомиться, кто от кого произошел (например, Яндексовый браузер судя по внешнему виду смахивает на IE, а значит вести себя должен подобающе). Я сегодня сам два офигительных бага в IE выловил, хотя Chrome, Safari, FF прекрасно отработали. Я навсегда запомнил слова одного из "учителей" - IE строже всех следует стандартам, а потому в нем чаще проявляются баги.
Хром же, напротив, один из самых неприхотливых и многое "прощает". |
Часовой пояс GMT +3, время: 19:21. |