JavaScript オブジェクト リテラルの "this" キーワードを理解する
JavaScript のオブジェクト リテラル内では、"this" キーワードの動作はまったく異なる場合があります他のプログラミング言語から。ここでは、その仕組みについて包括的に説明します。
呼び出し時バインディング
他の遅延バインディング言語とは異なり、JavaScript はコンパイル時ではなく呼び出し時に「this」をバインドします。時間または実行時間。これは、「this」の値が関数の呼び出し方法に依存することを意味します。
バインディング ルール
JavaScript オブジェクト リテラルの "this" のバインディング ルールは次のとおりです。
使用例の例
さまざまなバインド ルールを説明するには:
const obj = { foo: "Foo", bar() { console.log(this.foo); // "Foo" - "this" refers to the object }, }; obj.bar(); // Calls the method, binding "this" to the object
function MyDate(date) { this.date = date; } const obj1 = { foo: new Date(), bar: new MyDate(this.foo), // Error: this.foo is undefined }; const obj2 = { foo: new Date(), bar: new MyDate(obj2.foo), // Works: "this" refers to obj2 };
最初の例では、このメソッドはオブジェクトメソッドとして呼び出されるため、「this」はオブジェクト「obj」を参照します。 2 番目の例では、関数がオブジェクト コンテキストなしで呼び出されるため、「this」は「obj1」で定義されていません。 「obj2」では、関数が「this」オブジェクトで明示的に呼び出されるため、「this」は「obj2」を参照します。
以上が「this」キーワードは JavaScript オブジェクト リテラルでどのように動作しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。