call方法深入
- 简单来说,call方法的作用改变this指向
- 在执行call方法的时候,fn方法中的this变成第一个参数值obj,然后再把fn执行
function fn () {
console.log(this)
}
let obj = {a:1, b:2}
fn.call(obj) // fn的this就是obj了
- call方法原理(伪代码)
Function.prototype.myCall = function (context) {
let that = eval(this.toString().replace('this', context))
this = that
this()
}