Растолкуйте, пожалуйста код (внутри)
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]); } } } }); что-то совсем я потерялся, что и когда запускается?. |
Может так доходчивей ?
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]); } } } }); |
хотелось бы услышать комментарии по прохождению цикла фор
|
Код не мой, я просто размести объяву? :no:
|
по пятницам, я так понимаю, здесь не принято подавать?..
(нико кланяясь) дякуэмо вам!!! |
deivan,
Здесь сложно объяснить, поскольку в цикле тестируются переменные, не описанные в теле данной функции, тестируется наличие и тип И, в зависимости от результата присваиваются глобальные имена |
deivan,
а в поиске посмотреть как работает цикл for in религия не позволяет? и чем он отличается от цикла со счётчиком for ? |
dmitriymar, мое непонимание не касается принципа работы цикла.
А вот Deff все верно понял - я с трудом понимаю что там в глобальную область уходит... (нашел кусок чужого кода, он интересно построен, захотелось разобраться.. ) |
Ксать вот эта фигня f !== undefined ) может и неверна
alert(f !== undefined ) Наверное так <script> alert(typeof f != 'undefined' ) var f=1; alert(typeof f != 'undefined' ); </script> |
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]); } } } }); |
и еще господа, - скажите мне пожалуйста, в чем сакральный смысл получения с сервера данных и трансформацию их на лету в функции для немедленного выполнения?
это дает какой-то прирост производительности? или еще какой секрет?.. такой подход встречаю впервые, я бы вынес все возможные событийные модели в объекты и работал с ними, но вот натолкнулся на такой метод... может я чего-то не знаю?.. |
Cкорее всего это кроссдоменный запрос скрипта и исполнение какой-то статистики, возможно подпольной, Посколь своему серверу тестить не нужно(свои переменные он должен знать).
Своим функциям, проще присвоить длинное имя, а функции, как свойства объекта этого длинного(или уникального) имени Либо это использование чужой, малоизвестной и мало изученной, но понравившейся библиотеки Хотя код кривой - мы уже обсуждали - пост 10, занчит какой то хак |
Часовой пояс GMT +3, время: 11:03. |