* 实现函数 callIt,调用之后满足如下条件
1、返回的结果为调用 fn 之后的结果
2、fn 的调用参数为 callIt 的第一个参数之后的全部参数
function callIt(fn) {
return fn.apply(this, [].slice.call(arguments, 1));
}
// test
var fn = function(a, b, c) {
return a+b+c;
}
callIt(fn, 1, 2, 3); // 6
* 实现函数 partialUsingArguments,调用之后满足如下条件:
1、返回一个函数 result
2、调用 result 之后,返回的结果与调用函数 fn 的结果一致
3、fn 的调用参数为 partialUsingArguments 的第一个参数之后的全部参数以及 result 的调用参数
function partialUsingArguments(fn) {
var args = [].slice.call(arguments, 1);
return function() {
// [].slice.call(arguments) => 把arguments伪数组转换为数组
return fn.apply(this, args.concat([].slice.call(arguments)))
}
}
原文:https://www.cnblogs.com/mingzhanghui/p/9248682.html