помогите разобраться с кодом
Здравствуйте, имею дело с малопонятной библиотекой (пришла с легаси кодом, выкинуть не могу).
там есть такой кусок
function each(object, callback) {
var name, i = 0, length = object.length;
if(length === undefined){
for(name in object)
if(callback.call(object[name], name, object[name]) === false)
break;
}else{
for(var value = object[0];
i < length && callback.call(value, i, value) !== false;
value = object[++i]) {}
}
return object;
}
Function.prototype.extBind = function() {
var func = this, args = arguments;
return function() {
var argsArray = [];
each(args, function(i, obj) { argsArray[i] = obj; });
var obj = argsArray.shift(), currArgs = [];
each(arguments, function(i, obj) { currArgs[i] = obj; });
return func.apply(obj, currArgs.concat(argsArray));
}
}
который затем используется в следующем, например, контексте
initCurrent: function(){
this.updateCurrentOrders();
this.orders_current_timer = setInterval(function(){
this.updateCurrentOrders();
}.extBind(this), 500);
}
this в данном случае просто окружающий объект и вобщем то ясно, что интервал куда-то биндится. Но я не понимаю смысла всего вышеприведенного кода. Объясните пожалуйста что именно делает ф-ция extBind. |
Создает замыкание и возвращает функцию в которой доступны переменные из замыкания (var func , args).
т.е. каждый вызов extBind создает отдельное замыкание в котором свои уникальные (var func , args). |
А с какой целью это всё делается?
|
| Часовой пояс GMT +3, время: 06:21. |