超简单
不使用 apply 调用函数
function callIt(fn) {
let arr = [];
for(let i=0;i<arguments.length;i++){
arr.push(arguments[i]);
}
//apply是会自动把传入的数组里的参数提取出来的 普通函数调用必须要拆开
return fn(...arr.slice(1));
//函数里调用函数,this指针指向都是一样的 指向window,没有必要使用apply
}ES6 还可以利用扩展运算符...更简单
虽然arguments它不是数组 是1个对象 但只要内部是iterable的 就可以用...拆开
function callIt(fn) {
let arr = [...arguments];
//apply是会自动把传入的数组里的参数提取出来的 普通函数调用必须要拆开
return fn(...arr.slice(1));
//函数里调用函数,this指针指向都是一样的 指向window,没有必要使用apply
}连中间变量都不要了 一句代码搞定起飞
function callIt(fn) {
return fn(...[...arguments].slice(1));
}


京公网安备 11010502036488号