儲存它以用於巢狀函式物件

一個常見的缺陷是嘗試在巢狀函式或物件中使用 this,其中上下文已丟失。

document.getElementById('myAJAXButton').onclick = function(){
    makeAJAXRequest(function(result){
      if (result) { // success
        this.className = 'success';
      }
    })
}

這裡的上下文(this)在內部回撥函式中丟失了。要更正此問題,你可以將 this 的值儲存在變數中:

document.getElementById('myAJAXButton').onclick = function(){
    var self = this;
    makeAJAXRequest(function(result){
      if (result) { // success
        self.className = 'success';
      }
    })
}

Version >= 6

ES6 引入了箭頭函式 ,包括詞法 this 繫結。上面的例子可以這樣寫:

document.getElementById('myAJAXButton').onclick = function(){
    makeAJAXRequest(result => {
      if (result) { // success
        this.className = 'success';
      }
    })
}