call方法深入

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()
}

猜你喜欢

转载自blog.csdn.net/millions_02/article/details/80296596