保存它以用于嵌套函数对象

一个常见的缺陷是尝试在嵌套函数或对象中使用 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';
      }
    })
}