栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在对象原型方法的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);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/614699.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号