第1引数「関数」に第2引数以降を引数として部分適用した関数を返す。
■使用例
var subtract = function( a, b ){
return a - b;
}
var sub5 = _.partial( subtract, 5 );
var subForm20 = _.partial( subtract, _, 20 );
// re = -15;
var re = sub5( 20 );
// re2 = -15;
var re2 = subForm20( 5 );
■内部構造
_.partial = function(func) {
// 第2引数以降の引数。
var boundArgs = slice.call(arguments, 1);
// _.partial()に返される関数。
var bound = function() {
var position = 0, length = boundArgs.length;
var args = Array(length);
// _.partial()の引数をargsに格納するforループ。boundArgs[i] の値で「_」だった時は arguments[position++];
for (var i = 0; i < length; i++) {
// arguments は bound()の引数。
args[i] = boundArgs[i] === _ ? arguments[position++] : boundArgs[i];
}
// bound()の引数をargsに追加するwhileループ。
while (position < arguments.length) args.push(arguments[position++]);
// executeBound()に代入。
return executeBound(func, bound, this, this, args);
};
// bound() 定義終了。
return bound;
};