Помогите разобраться. 
		
		
		
		Доброго времени суток. 
	Читаю книгу "Джон Рейсиг JavaScript Профессиональные приёмы программирования". Не понял пример из книги. А именно строку с объектом name. Нужна ваша помощь. Пример: 
function attr(elem, name, value) { 
// Гарантирование допустимости предоставленного имени
	if ( !name || name.constructor != String ) return ''; 
// Определение, не относится ли это имя к тем самым«роковым» 
// именам
	name = { 'for': 'htmlFor', 'class': 'className' }[name] || name; /* Не понял вот эту строку. Что здесь происходит? */
// Если пользователь устанавливает значение, то также
	if ( typeof value != 'undefined' ) { 
// сначала установить быстрый способ
		elem[name] = value; 
// По возможности воспользоватьсяsetAttribute 
		if ( elem.setAttribute ) 
			elem.setAttribute(name,value); 
	} 
// Вернуть значение атрибута
	return elem[name] || elem.getAttribute(name) || ''; 
}
 | 
	
		
 Цитата: 
	
 var temp = { 'for': 'htmlFor', 'class': 'className' } равносильно: var temp = new Object(); temp['for']='htmlFor'; temp['class']='className'; name = что-то || name; равносильно if( что-то ) name = что-то; // else name = name; Все вместе получается примерно так: var temp = new Object(); temp['for']='htmlFor'; temp['class']='className'; if( temp[name] ) name = temp[name];  | 
	
		
 Спасибо. Теперь понял.:) 
	 | 
	
		
 Что-то автор книги смешал в кучу атрибуты и свойства. Этого делать не стоит. В jQuery есть отдельно метод attr для работы с атрибутами и prop для работы со свойствами. Если все смешать в кучу - возникнет куча непоняток и косяков. 
	Кроме того, тут получается что при попытке установить атрибут class, код изменит свойство el.className (ок), и еще зачем-то создаст мусорный атрибут classname в не-IE браузерах. В который раз наблюдаю как во всяких "умных" книжках пишут каку. Наверно и хороших книг то нет на свете по программированию js  | 
	
		
 Цитата: 
	
 Цитата: 
	
  | 
| Часовой пояс GMT +3, время: 07:37. |