let a = {
y:'zjy',
x(m,n){
console.log(this.y,m,n)
}
}
let b = {
y:'lyn'
}
a.x.call(b,1,2) //lyn 1 2
a.x.apply(b,[1,2]) //lyn 1 2
- 改变this指向
- 传入参数
- call、apply返回函数结果,bind返回新函数
Function.prototype.myCall = (obj = window,...args) => {
obj.fn = this
let res = obj.fn(...args)//隐式绑定
delete obj.fn
return res
}