1.var that = this;(最简单,最省力)
this.getNumLater = function(){ setTimeout(function(){ console.log(that.num); //利用闭包访问that,that是一个指向obj的指针 }, 1000) }
2.bind()方法(这里是创建了一个新函数,并将第一个参数作为新函数运行时的this)
this.getNumLater = function(){ setTimeout(function(){ console.log(this.num); }.bind(this), 1000) //利用bind()将this绑定到这个函数上 }
3.箭头函数(ES6中的箭头函数完全修复了this的指向,this总是指向词法作用域,也就是外层调用者obj)
this.getNumLater = function(){ setTimeout(() => { console.log(this.num); }, 1000) //箭头函数中的this总是指向外层调用者,也就是Obj }
原文链接Little Zhang关于setInterval和setTImeout中的this指向问题
原文:https://www.cnblogs.com/dagongren/p/14129547.html