Показать сообщение отдельно
  #1 (permalink)  
Старый 31.08.2016, 10:37
Новичок на форуме
Отправить личное сообщение для swedenborg Посмотреть профиль Найти все сообщения от swedenborg
 
Регистрация: 31.08.2016
Сообщений: 2

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

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

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.
Ответить с цитированием