Pythonのような言語とは異なり、Javascriptメソッドは、それを抽出して別の場所に渡した後、それがメソッドであることを忘れます。あなたはどちらかをすることができます
メソッド呼び出しを無名関数内にラップします
このように、プロパティへのアクセスbaz
と呼び出しは同時に行われます。これはthis
、メソッド呼び出し内でを正しく設定するために必要です。
内部関数は別のオブジェクトthis
を参照するため、外部関数のをヘルパー変数に保存する必要があります。this
var that = this;
setInterval(function(){
return that.baz();
}, 1000);
メソッド呼び出しを太い矢印関数内にラップします
矢印関数機能を実装するJavascript実装では、太い矢印構文を使用して、上記のソリューションをより簡潔に記述できます。
setInterval( () => this.baz(), 1000 );
ファットアロー無名関数は周囲の関数からを保持するため、トリックthis
を使用する必要はありません。var that = this
この機能を使用できるかどうかを確認するには、次のような互換性テーブルを参照してください。
バインディング関数を使用する
最後の代替手段は、Function.prototype.bindなどの関数またはお気に入りのJavascriptライブラリの同等の関数を使用することです。
setInterval( this.baz.bind(this), 1000 );
//dojo toolkit example:
setInterval( dojo.hitch(this, 'baz'), 100);