首頁 > web前端 > js教程 > 在 JavaScript 中使用 setTimeout/setInterval 時,如何在原型方法中保留「this」上下文?

在 JavaScript 中使用 setTimeout/setInterval 時,如何在原型方法中保留「this」上下文?

Mary-Kate Olsen
發布: 2024-10-18 15:02:30
原創
613 人瀏覽過

How Can I Preserve \

Preserving "this" Context in Prototype Methods with setTimeout/setInterval

In Javascript, accessing "this" within a prototype method can become tricky when using setTimeouts or intervals. Unlike in Python, Javascript methods lose their context when passed externally. To overcome this challenge, we explore various solutions.

Anonymous Function Wrapper

The most straightforward approach is to wrap the method call in an anonymous function:

<code class="javascript">var that = this;
setInterval(function(){
    return that.baz();
}, 1000);</code>
登入後複製

This ensures that the method call and access to "this" occur simultaneously, preserving the correct context.

Fat Arrow Function Wrapper (ES6)

For implementations supporting fat arrow functions:

<code class="javascript">setInterval( () =&gt; this.baz(), 1000 );</code>
登入後複製

This concise syntax preserves the context from the surrounding function.

Function Binding

Finally, consider using a binding function like Function.prototype.bind:

<code class="javascript">setInterval( this.baz.bind(this), 1000 );</code>
登入後複製

Alternatively, libraries like Dojo provide methods like "hitch" for context binding.

以上是在 JavaScript 中使用 setTimeout/setInterval 時,如何在原型方法中保留「this」上下文?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板