首页 > web前端 > js教程 > 正文

使用 setInterval 和 setTimeout 处理原型方法中的'this”引用:解决方案是什么?

Linda Hamilton
发布: 2024-10-18 15:03:30
原创
285 人浏览过

Handling

使用 setInterval 和 setTimeout 处理原型方法中的 this 引用

在 JavaScript 中,原型方法在提取并传递到其他地方时会失去 this 关联。考虑以下代码:

function Foo() {}
Foo.prototype = {
  bar: function () {
    this.baz();
  },
  baz: function () {
    this.draw();
    requestAnimFrame(this.baz);
  }
};
登录后复制

此代码失败并出现错误,因为它未正确绑定在 setInterval 或 setTimeout 回调内。

解决方案:

有几种方法可以处理这个问题:

将方法调用包装在匿名函数中:

var that = this;
setInterval(function () {
  return that.baz();
}, 1000);
登录后复制

这可以使用外部函数保留 this辅助变量。

将方法调用包装在胖箭头函数中:

setInterval(() => this.baz(), 1000);
登录后复制

胖箭头匿名函数维护周围函数的 this。

使用绑定函数:

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

// dojo toolkit example:
setInterval(dojo.hitch(this, 'baz'), 10);
登录后复制

诸如 Function.prototype.bind 之类的绑定函数或等效库允许您显式绑定 this 上下文。

以上是使用 setInterval 和 setTimeout 处理原型方法中的'this”引用:解决方案是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!