一、核心思想
apply方法和call方法相似,区别在于参数,我们可以使用apply方法的原理实现apply方法
二、代码实现
/*** 手写apply* @param {Function} o 函数* @param {Array} args 数组* @return 根据具体情况考虑*/
function Fn(a,b,c,d){console.log("this.name:",this.name)console.log("a,b,c,d:",a,b,c,d)
}
let obj = {name:'ww'
}
Function.prototype.myApply = function(o,args){o = o||windowo.fn = thiso.fn(...args)delete o.fn
}
Fn.myApply(obj,[1,2,3,4])
// this.name: ww
// a,b,c,d: 1 2 3 4