Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   помогите разобраться с кодом (https://javascript.ru/forum/misc/64708-pomogite-razobratsya-s-kodom.html)

swedenborg 31.08.2016 10:37

помогите разобраться с кодом
 
Здравствуйте, имею дело с малопонятной библиотекой (пришла с легаси кодом, выкинуть не могу).

там есть такой кусок

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.

MallSerg 31.08.2016 14:31

Создает замыкание и возвращает функцию в которой доступны переменные из замыкания (var func , args).
т.е. каждый вызов extBind создает отдельное замыкание в котором свои уникальные (var func , args).

swedenborg 31.08.2016 17:05

А с какой целью это всё делается?


Часовой пояс GMT +3, время: 05:10.