⊗jsOpAdMCL 43 of 60 menu

JavaScriptにおけるOOPのメソッドコードでのコンテキスト喪失

クラスのメソッドのソースコードを使用する際、 コンテキストが失われる可能性があります。 例を見てみましょう。 次のクラスがあるとします:

class User { #name; constructor(name) { this.#name = name; } getName() { return this.#name; } }

このクラスのオブジェクトを作成します:

let user = new User('john');

メソッドのコードを変数に代入します:

let func = user.getName;

メソッドを変数に代入した瞬間に コンテキストが失われました。これにより、メソッドコード内の this は クラスオブジェクトを指さなくなります。 試しに関数を呼び出してみましょう:

console.log(func()); // エラー

この問題を解決するためには、関数にコンテキストをバインドできます。 例えば、 bind を使用します:

func = func.bind(user); console.log(func()); // 動作します
日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否