鍍金池/ 問答/Java  網(wǎng)絡(luò)安全  HTML/ call 方法里面的 this 指代的是什么

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

本人學(xué)習(xí)javascriptthis相關(guān)內(nèi)容的時(shí)候遇到了一點(diǎn)困惑, 如下:

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

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

困惑在于, 這里的call綁定的this指代的是什么, 是不是指的window, 如果是的話, 是不是這句話就相當(dāng)于普通的函數(shù)調(diào)用, 即add(1, 2)

希望能有前輩解答, 不勝感激!

回答
編輯回答
空痕

call()函數(shù)的作用是改變函數(shù)的執(zhí)行上下文,也就是函數(shù)的this指針,第一個(gè)參數(shù)就是你想要函數(shù)所執(zhí)行的那個(gè)上下文,這里面this,如果是在全局作用域執(zhí)行,那么this指向的就是window。如果add.call()是在另一個(gè)非全局上下文,那么指的就是那個(gè)??梢钥聪旅娲a:

  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
2018年1月11日 16:36