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( () => 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!