- JavaScript
-
2022-05-02
JavaScriptのクラスやオブジェクトリテラルでコーディングしていて、他の言語と同じ感覚でthis
キーワードを使用しているとバグが発生する可能性があります。
他の言語だとthis
というとクラスやオブジェクト自身を参照するのですが、JavaScriptだと少し違って、通常は同じようにクラスやオブジェクト自身を参照してくれるのですが、コールバック関数で呼び出された場合はwindow
を参照するのです。
これを知らないと意図しない動作でバグとなり、エラーが発生しますのでご注意ください。
実際にサンプルコードを踏まえて説明します。
まずはコールバック関数を実行するメソッドを含んだオブジェクトを作成します。
const exam1 = { a: function(callback) { callback(); } }
次に、コールバック関数を引数に与えて、先ほどのオブジェクトのメソッドを実行するためのオブジェクトを作成します。
const exam2 = { b: function() { console.log("function b!"); }, c: function() { this.b(); }, d: function() { exam1.a(exam2.c); } }
実行する順番としては次の通りです。
続きを読む…»
