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