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));