Здравствуйте, имею дело с малопонятной библиотекой (пришла с легаси кодом, выкинуть не могу).
там есть такой кусок
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.