JSのクラスで、メソッドの中でsetIntervalを使う場合、
class HogeClass { constructor() { this.hoge = 1; } fooFunc() { console.log(this.hoge); } hogeFunc() { setInterval(this.fooFunc, 1000); } }
では想定通りの動きをしない(1秒毎にthis.hogeの値がコンソールに出力されるはずが、1秒毎に「undefined」が出力される)のですが、
class HogeClass { constructor() { this.hoge = 1; } hogeFunc() { var f = this; return setInterval( function() { console.log(f.hoge); }, 1000 ) } }
と書くとちゃんと1秒毎にthis.hogeの値である1が出力されます。
・「var f = this;」では何をやっているのか
・どうして上のコードでは「1」ではなく「undefined」が出力されるのか
がわかりません。教えて下さい。
回答4件
あなたの回答
tips
プレビュー