Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.02.2013, 13:59
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

Растолкуйте, пожалуйста код (внутри)
socket.on('data', function (data) {
	data.__sock = parseInt(data.__sock);
	if(data.__sock > 0 && data.__sock !== userId) return;
	
	for (f in data) {
		if(f !== undefined && typeof window[f] == 'function')
		{
			var func = window[f];
			func(data[f]);
		} else if(f !== undefined && f.indexOf(".") != -1) {
			var re = /([a-z]{1,})\.([a-z]{1,})/i;
			found = f.match(re);
			if(typeof window[found[1]] == 'object' && typeof window[found[1]][found[2]] == 'function') {
				var func = window[found[1]][found[2]];
				func(data[f]);
			}
		}
	}
});

что-то совсем я потерялся, что и когда запускается?.
Ответить с цитированием
  #2 (permalink)  
Старый 08.02.2013, 14:31
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Может так доходчивей ?
socket.on('data', function (data) {
	data.__sock = parseInt(data.__sock);
	if(data.__sock > 0 && data.__sock !== userId) return;
	
	for (f in data) {
		if(f !== undefined && typeof window[f] == 'function') {
		     var func = window[f];func(data[f]); return;
		}
		
		if(f !== undefined && f.indexOf(".") != -1) {
			var re = /([a-z]{1,})\.([a-z]{1,})/i;
			found = f.match(re);
			if(typeof window[found[1]] == 'object' && typeof window[found[1]][found[2]] == 'function') {
				var func = window[found[1]][found[2]];
				func(data[f]);
			}
		}
		
	}
});
Ответить с цитированием
  #3 (permalink)  
Старый 08.02.2013, 14:34
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

хотелось бы услышать комментарии по прохождению цикла фор
Ответить с цитированием
  #4 (permalink)  
Старый 08.02.2013, 14:38
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

Код не мой, я просто размести объяву?
Ответить с цитированием
  #5 (permalink)  
Старый 08.02.2013, 15:05
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

по пятницам, я так понимаю, здесь не принято подавать?..
(нико кланяясь) дякуэмо вам!!!
Ответить с цитированием
  #6 (permalink)  
Старый 08.02.2013, 15:20
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

deivan,
Здесь сложно объяснить, поскольку в цикле тестируются переменные, не описанные в теле данной функции, тестируется наличие и тип
И, в зависимости от результата присваиваются глобальные имена
Ответить с цитированием
  #7 (permalink)  
Старый 08.02.2013, 15:21
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

deivan,
а в поиске посмотреть как работает цикл for in религия не позволяет? и чем он отличается от цикла со счётчиком for ?
Ответить с цитированием
  #8 (permalink)  
Старый 08.02.2013, 15:31
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

dmitriymar, мое непонимание не касается принципа работы цикла.

А вот Deff все верно понял - я с трудом понимаю что там в глобальную область уходит...

(нашел кусок чужого кода, он интересно построен, захотелось разобраться.. )
Ответить с цитированием
  #9 (permalink)  
Старый 08.02.2013, 15:40
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Ксать вот эта фигня f !== undefined ) может и неверна

alert(f !== undefined )


Наверное так
<script>
alert(typeof f != 'undefined' )
var f=1;
alert(typeof f != 'undefined' );
</script>

Последний раз редактировалось Deff, 08.02.2013 в 15:58.
Ответить с цитированием
  #10 (permalink)  
Старый 08.02.2013, 15:42
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

socket.on('data', function (data) {
	data.__sock = parseInt(data.__sock);
	if(data.__sock > 0 && data.__sock !== userId) return;
	
	for (f in data) {

		if(typeof f != 'undefined' && ) return;
		if(typeof window[f] == 'function') {
		     var func = window[f];func(data[f]); return;
		}
		
		if(f.indexOf(".") != -1) {
			var re = /([a-z]{1,})\.([a-z]{1,})/i;
			found = f.match(re);
			if(typeof window[found[1]] == 'object' && typeof window[found[1]][found[2]] == 'function') {
				var func = window[found[1]][found[2]];
				func(data[f]);
			}
		}
		
	}
});

Последний раз редактировалось Deff, 08.02.2013 в 15:53.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите модифицировать код JS refer5 Общие вопросы Javascript 2 22.01.2013 21:42
помогите пожалуйста улучшить код. Duda.Ml1986@gmail.com Серверные языки и технологии 4 07.01.2012 20:53
Типографика и HTML код Manjuriano (X)HTML/CSS 3 23.11.2011 12:22
Как получит ссылку на элемент внутри которого запустили JS код? aRpi Events/DOM/Window 20 02.10.2011 13:36
Как узнать динамический код страницы? gosha13 Общие вопросы Javascript 5 27.07.2009 13:31