Referencing "this" in Interval/Timeout Functions within Object Prototype Methods
In JavaScript, referencing "this" within nested functions can be tricky, especially when working with object prototype methods. Consider the following code snippet:
<code class="javascript">function Foo() {} Foo.prototype = { bar: function () { this.baz(); }, baz: function () { this.draw(); requestAnimFrame(this.baz); } };</code>
This code will result in an error when calling bar() because this refers to the global object within the baz function. To resolve this issue, you can utilize several techniques:
1. Anonymous Function Wrapper
Wrap the baz call within an anonymous function, passing the correct this value:
<code class="javascript">var that = this; setInterval(function(){ return that.baz(); }, 1000);</code>
2. Fat Arrow Function Wrapper
In JavaScript implementations with arrow function support:
<code class="javascript">setInterval( () => this.baz(), 1000 );</code>
3. Binding Function
Use a function like Function.prototype.bind to bind this:
<code class="javascript">setInterval( this.baz.bind(this), 1000 );</code>
By employing these techniques, you can ensure that this references the correct object within interval or timeout functions, ensuring consistent and functional prototype method behavior.
위 내용은 JavaScript의 객체 프로토타입 메서드 내 콜백 함수에서 \'this\' 참조를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!