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 }