Отрицательные свойства у объекта 
		
		
		
		Приветствую. 
	Допустимо ли задавать отрицательные свойства тому или иному объекту? К примеру: 
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, время: 18:43. |