您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在对象原型方法的setInterval / setTimeout内部引用“ this”

在对象原型方法的setInterval / setTimeout内部引用“ this”

与Python之类的语言不同,Javascript方法忘记了将其提取并传递到其他地方后才使用的方法。你可以

这样,访问baz属性调用它是同时发生的,这是this方法调用中正确设置的必要条件。

您将需要this将外部函数中的from 保存到一个辅助变量中,因为内部函数将引用另一个this对象。

var that = this;
setInterval(function(){
    return that.baz();
}, 1000);

在实现箭头功能功能的Javascript实现中,可以通过使用fatarrow语法以更简洁的方式编写上述解决方案:

setInterval( () => this.baz(), 1000 );

粗箭头匿名函数保留了this周围函数的,因此无需使用该varthat=this技巧。要看到,如果你可以使用此功能,请咨询兼容性表像这一个

最后一种选择是使用诸如Function.prototype.bind之类的函数或您喜欢的Javascript库中的等效函数

setInterval( this.baz.bind(this), 1000 );

//dojo toolkit example:
setInterval( dojo.hitch(this, 'baz'), 100);
其他 2022/1/1 18:13:54 有608人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶