`var _slice = Array.prototype.slice;
function fn(fn1){
var a = _slice.call(arguments,1)
console.log(a);
return function(){
var b = _slice.call(arguments);
console.log(b);
var arr = a.concat(b);
console.log(arr);
return fn1.apply(null,arr)
}
}
function add(c){
function add1 (prev,next){
return prev+next;
};
return c.reduce(add1)
}
// alert(add([2,3]))
alert(fn(add,1)(2,3))`
是不是访问不到里面的?
改下
return fn1.apply(null,arr)
,用 call 试一试,改成return fn1.call(null,arr)
。ps:以后尽量贴代码,不要贴图片,不好修改。
--- 添加内容
apply 也可以,要这样用:
return fn1.apply(null,[arr])
要理解 apply 传入的数组的含义,数组的第一个元素对应函数的第一个参数,以此类推。所以,你的写法是错误的。