call 方法里面的 this 指代的是什么

本人学习javascriptthis相关内容的时候遇到了一点困惑, 如下:

var add = function(a, b) {
    return a + b;
}

add.call(this, 1, 2) // 3

困惑在于, 这里的call绑定的this指代的是什么, 是不是指的window, 如果是的话, 是不是这句话就相当于普通的函数调用, 即add(1, 2)

希望能有前辈解答, 不胜感激!

阅读 2.7k
1 个回答

call()函数的作用是改变函数的执行上下文,也就是函数的this指针,第一个参数就是你想要函数所执行的那个上下文,这里面this,如果是在全局作用域执行,那么this指向的就是window。如果add.call()是在另一个非全局上下文,那么指的就是那个。可以看下面代码:

  var add = function(a, b) {
    console.log(this); // 增加查看this的语句
    return a + b;
  }
  add.call(this,1,2); // window
  var obj = {
    func: function () {
      add.call(this,1,2);
    }
  }
  obj.func(); // 输出Object
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题