超简单
不使用 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));
}