将正确的“this”上下文传递给setTimeout回调
问题:
如何我们在 setTimeout 回调函数中执行一个类方法,保留上下文(即
上下文解释:
使用 setTimeout 时,“this”变量指的是全局对象(窗口),而不是尝试访问类属性时所需的行为或
答案:
方法 1:存储本地引用
var that = this; if (this.options.destroyOnHide) { setTimeout(function(){ that.tip.destroy() }, 1000); }
方法 2:使用bind()
if (this.options.destroyOnHide) { setTimeout(function(){ this.tip.destroy() }.bind(this), 1000); }
方法 3:使用箭头函数 (ES6)
if (this.options.destroyOnHide) { setTimeout(() => { this.tip.destroy() }, 1000); }
方法 4:向 setTimeout 传递参数 (HTML5)
if (this.options.destroyOnHide) { setTimeout(function(that){ that.tip.destroy() }, 1000, this); }
进一步阅读:
以上是如何在 setTimeout 回调中保留'this”上下文?的详细内容。更多信息请关注PHP中文网其他相关文章!