コアポイント
this
は通常、メソッドを「所有」するオブジェクトを指しますが、関数の呼び出に依存します。 this
はグローバルオブジェクトを参照します。 Webブラウザでは、window
で表されます。 this
はグローバルオブジェクトを保持しますが、オブジェクトコンストラクターまたはそのいずれかを呼び出すとき、this
はオブジェクトのインスタンスを参照します。 call()
、apply()
、bind()
などのメソッドを使用してthis
のコンテキストを変更できます。これらのメソッドは、指定されたthis
値とパラメーターを使用して関数を呼び出します。 javascriptは優れたプログラミング言語です。この文は数年前に議論の余地があったかもしれませんが、開発者はその美しさと優雅さを再発見しました。 JavaScriptが気に入らない場合は、次の理由かもしれません。
キーワードは、最も混乱する概念の1つです。ほとんどの言語では、this
は、インスタンス化する現在のオブジェクトへの参照です。 JavaScriptでは、this
は通常、メソッドを「所有」するオブジェクトを指しますが、関数の呼び出に依存します。 this
グローバルスコープ
現在のオブジェクトがない場合、はグローバルオブジェクトを参照します。 Webブラウザでは、ドキュメント、場所、履歴、およびその他の便利なプロパティと方法を表すトップレベルのオブジェクトです。 this
window
window.WhoAmI = "我是 window 对象"; alert(window.WhoAmI); alert(this.WhoAmI); // 我是 window 对象 alert(window === this); // true
関数を呼び出している場合は、
グローバルオブジェクトを保持します:
this
window.WhoAmI = "我是 window 对象"; function TestThis() { alert(this.WhoAmI); // 我是 window 对象 alert(window === this); // true } TestThis();
オブジェクトコンストラクターまたはそのメソッドのいずれかを呼び出すとき、
は、クラスベースの言語のようにオブジェクトのインスタンスを参照します:
this
window.WhoAmI = "我是 window 对象"; function Test() { this.WhoAmI = "我是 Test 对象"; this.Check1 = function() { alert(this.WhoAmI); // 我是 Test 对象 }; } Test.prototype.Check2 = function() { alert(this.WhoAmI); // 我是 Test 对象 }; var t = new Test(); t.Check1(); t.Check2();
またはcall
を使用します
apply
本質的に、および
call
apply
唯一の違いは、
function SetType(type) { this.WhoAmI = "我是 " + type + " 对象"; } var newObject = {}; SetType.call(newObject, "newObject"); alert(newObject.WhoAmI); // 我是 newObject 对象 var new2 = {}; SetType.apply(new2, ["new2"]); alert(new2.WhoAmI); // 我是 new2 对象
の簡単な説明です!しかし、それがあなたをトラブルに巻き込むことができることに注意すべきことがいくつかあります。これらについては、次の投稿で説明します…call
JavaScript apply
this
で
についてのFAQ キーワードは、呼び出し関数のコンテキストを指す特別なキーワードです。これは、関数が属するオブジェクトへの参照です。 の値は、その使用状況に応じて変更されます。メソッドでは、 矢印関数でどのように動作しますか? と他のプログラミング言語での 、 がパラメーターリストを受け入れ、 厳密なモードでは、実行コンテキストを入力するときに はい、 オブジェクトです。 node.jsでは、グローバルオブジェクトはグローバルオブジェクトリテラルです。関数またはメソッドの外でJavaScriptのキーワードは何ですか?なぜそれが重要なのですか?
javaScriptのthis
this
の値は、関数がどのように呼び出されるかに依存します。関数内のオブジェクトのプロパティと方法にアクセスし、コードをより柔軟で再利用可能にすることができるため、重要です。 this
キーワードはさまざまなコンテキストでどのように機能しますか?
this
this
は所有者オブジェクトを参照します。単独で使用する場合、this
はグローバルオブジェクトを指します。関数では、this
はグローバルオブジェクトを指します。イベントでは、this
はイベントを受け取る要素を指します。 this
イベントハンドラーでは、イベントを受信するHTML要素を指します。これにより、イベントハンドラー機能で要素に直接アクセスして操作できます。たとえば、
this
this
onclick
矢印関数は、通常の関数とは異なる方法で処理します。矢印関数では、onclick
は語彙結合です。これは、矢印関数を含むコードでthis
を使用することを意味します。したがって、矢印関数の場合、の値を維持します。
javascriptのthis
this
の違いは何ですか? this
this
多くのオブジェクト指向プログラミング言語では、this
は常に現在のクラスのインスタンスを指します。ただし、javaScriptでは、this
の値は、機能の定義位置ではなく、実行のコンテキストと関数の呼び出によって決定されます。 関数で
this
のコンテキストを変更するにはどうすればよいですか? this
this
、this
などのメソッドを使用しておよび
値とパラメーターを使用して関数を呼び出します。 2つの違いは、this
メソッドは、指定されたcall()
は単一のパラメーター配列を受け入れることです。 apply()
メソッドは、関数を特定のオブジェクトにバインドできる新しい関数を返します。 bind()
コンストラクターのthis
の値は何ですか? call()
apply()
コンストラクターでは、this
は新しく作成されたオブジェクトを指します。 call()
キーワードを使用してオブジェクトのインスタンスを作成すると、apply()
は新しいオブジェクトに自動的に設定されます。 bind()
this
厳密なモードでどのように動作しますか? this
の値が設定された値に残ります。未定義の場合、それは未定義のままです。これは、非定期モードとは異なり、this
は未定義の場合はグローバルオブジェクトにデフォルトです。
this
それはnullまたは未定義であることができますか? this
は、特にStrictモードで関数を呼び出す場合、または最初の引数として未定義またはnullを使用してcall()
またはapply()
を使用している場合に、nullまたは未定義にすることができます。 JavaScriptのグローバルオブジェクトは何ですか?
JavaScriptのグローバルオブジェクトは環境によって異なります。 Webブラウザでは、グローバルオブジェクトはwindow
が使用される場合、グローバルオブジェクトを指します。 this
以上が' this' JavaScriptで?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。