js-study-part4-task2

by tigeral

HTML

<!--
Дополнение к заданию 1: сделать так, чтобы написанная ф-ция partialApply была доступна всем функциям как метод, т.е вот  так:
var add3 = sum.partialApply(3);
add3(10); //=> 13;
-->

JavaScript

// firstArg is required to avoid the partialApply method call without arguments
Function.prototype['partialApply'] = function(firstArg) {
  var partialArgs = Array.from(arguments);
  var func = this;
  var wrapperFunc = function() {
    var args = Array.from(arguments);
    return func.apply(this, partialArgs.concat(args));
  };
  wrapperFunc['length'] = Math.max(this.length - partialArgs.length, 0);
  return wrapperFunc;
};

function sum(a,b) {
  return a + b;
}
var add3 = sum.partialApply(3);
console.log(add3(10));