 
			
				22.02.2012, 23:47
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.02.2012 
					
					
					
						Сообщений: 163
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от vasa_c
			
		
	 | 
 
	| 
		И задача эта не такая простая как с первого взгляда кажется.
	 | 
 
	
 
 Я читая то сообщение ответил  что прошу пример. Разве не понятно что повтор того сообщения новой информации мне не принесет? Я ЧИТАЯ то твое сообщение попросил привести примеры.
 
Приведи пример где что-то работает адово и неправильно? А то  я что-то вообще не понимаю о чем ты? Может тебе прсто стоит почитать учебник для начинающий если тебе что-то кажется трудным? Или спецификацию. А лучше напиши мне я тебе на вопросы отвечу и побьясню что как работает чтобы не казалось адовым. я же помочь хочу. Если ты не пришлешь пример с кодом где у тебя возникают проблемы и адовый дискомфорт, то будем считать что это просто твоя нубоватость его вызывает).  
И тебе просто нужно подучиться. И набраться опыта.
   
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Mахmaxmaximus, 23.02.2012 в 00:45.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				23.02.2012, 12:24
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.03.2008 
					
					
					
						Сообщений: 183
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Mахmaxmaximus, твой съезд на личности не добавляет авторитета твоим сообщениям.  
 
Попробую пояснить в последний раз - я понимаю как и что работает, безо всяких объяснений. Меня не до конца нравится как именно это работает. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				23.02.2012, 14:39
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.02.2012 
					
					
					
						Сообщений: 163
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от vasa_c
			
		
	 | 
 
	| 
		Попробую пояснить в последний раз - я понимаю как и что работает, безо всяких объяснений. Меня не до конца нравится как именно это работает.
	 | 
 
	
 
 как тут безличности если ты - личность, и у тебя проблемы. 
Они могут быть связанными с твоим незнанием с нубоватостью! 
Либо с языком.
 
Вот я и просил пример кода чтобы обьяснить  что да как. 
Просто у меня адовости же нет, я бы и хотел чтобы у тебя её не было.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				23.02.2012, 14:53
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.03.2008 
					
					
					
						Сообщений: 183
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Проблемы есть у всех, но мы здесь обсуждаем не их, а typeof. 
 
"Адовость" в том, что чтобы написать простую функцию требуется множество выкрутасов с последующей отладкой во всех браузерах. 
 
Попробую ещё раз описать её. 
Нужно проитерировать произвольное входное значение. 
Для этого нужно соотнести её с одним из трёх семантически различных типов: 
 
1. грубо говоря "словарь": то что итерировать нужно через for..in. 
 
2. список (Array, arguments, HTMLCollection ...), перебираемый последовательным доступом. 
 
3. скаляр, сюда же нужно отнести function, DOMElement, TextNode и другие подобные структуры. 
хотя они и являются объектами, но работать нужно с их значением, а не набором привязанных свойств. 
 
вот если приведёшь реализацию функции, в которой это всё будет сделано просто, элегантно и органично с языком, то я заберу все свои слова назад. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				23.02.2012, 15:48
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 15.02.2011 
					
					
					
						Сообщений: 471
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
function each(collection, callback, scope) {
    var key;
    for (key in collection) {
        if (collection.hasOwnProperty(key) {
            callback.call(scope, collection[key], key, collection);
        }
    }
}
Кроссбраузерность 100%. Я потратил на написание меньше минуты.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				23.02.2012, 16:58
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.03.2008 
					
					
					
						Сообщений: 183
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Первое же на вскидку, что могу сказать: 
 
1. Chrome, Opera и Safari в HTMLCollection переберут и свойство length 
 
2. В IE7 у HTMLCollection вообще нет метода hasOwnProperty() - вылетит с ошибкой. 
 
3. 3-й пункт моего примера не обрабатывается. 
 
4. Любое добавленное к массиву или коллекции свойство попадёт в перебор. 
Пример - перебор jQuery-объекта. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				23.02.2012, 17:35
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.02.2012 
					
					
					
						Сообщений: 163
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
function each(collection, callback, scope) {
    var key;
    for (key in collection) if (collection.hasOwnProperty(key) {
         
            callback.call(scope, collection[key], key, collection);
      
    }
}
1. Chrome, Opera и Safari в HTMLCollection переберут и свойство length
обманываете
 2. В IE7 у HTMLCollection вообще нет метода hasOwnProperty() - вылетит с ошибкой.
это как то связано с javascript?
 4. Любое добавленное к массиву или коллекции свойство попадёт в перебор. 
Пример - перебор jQuery-объекта.
так ты это и хотел, а если нет, то отвечу так:
 
есть универсальный итератор, я его выше показал, если нужен персональный итератор для определенного класса сущностей то сделай его.  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Mахmaxmaximus, 23.02.2012 в 17:37.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				23.02.2012, 17:42
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 15.02.2011 
					
					
					
						Сообщений: 471
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Добавлять свойства к уже определенным ранее объектам это признак дурного тона, а если Вам было необходимо расширить функционал уже нативных коллекций, тогда следовало бы создать наследника и использовать его в своих нуждах. В таком случае пользовательские свойства не попадают под итерацию. 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось DreamTheater, 23.02.2012 в 17:46.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				23.02.2012, 17:45
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.02.2010 
					
					
					
						Сообщений: 364
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Mахmaxmaximus
			
		
	 | 
 
	
		4. Любое добавленное к массиву или коллекции свойство попадёт в перебор. 
Пример - перебор jQuery-объекта. 
так ты это и хотел
	 | 
 
	
 
 Вот пример о чем вообще идет речь.
 
var arr = [1,2,3]; 
arr.foo = 'bar'; 
for( var  prop in arr ) { 
    arr.hasOwnProperty( prop ) && console.log( prop, arr[prop] ) ;
}
Для перебора нужно использовать, то что для это предназначено.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				23.02.2012, 17:49
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 15.02.2011 
					
					
					
						Сообщений: 471
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от nikita.mmf
			 
		
	 | 
 
	
		Вот пример о чем вообще идет речь. 
var arr = [1,2,3]; 
arr.foo = 'bar'; 
for( var  prop in arr ) { 
    arr.hasOwnProperty( prop ) && console.log( prop, arr[prop] ) ;
}
 
 
Для перебора нужно использовать, то что для это предназначено.
	 | 
 
	
 
 Массивы перебираются через  
for (var i = 0; i < arr.length; i++)
 , можно ведь написать так?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |