一、核心思想
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||window
o.fn = this
o.fn(...args)
delete o.fn
}
Fn.myApply(obj,[1,2,3,4])
// this.name: ww
// a,b,c,d: 1 2 3 4