ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の this キーワードをマスターする
JavaScript の this キーワードは、理解していないと非常に難しくなります。これは、経験豊富な開発者でも簡単に理解するのが難しいものの 1 つですが、一度理解すれば、大幅に時間を節約できます。
この記事では、これが何であるか、さまざまな状況でどのように機能するか、そしてそれを使用する際に陥りてはならないよくある間違いについて説明します。
これは、JavaScript コードで現在使用されているオブジェクトを単に指します。ただし、ここが難しい部分です。これが何を指すかは、コード内のどこでどのように使用するかによっても変わる可能性があります。 「それはなぜですか?」と尋ねる人もいるかもしれません。これは本質的に動的です =、つまり - その値は、関数が書かれたときではなく、関数が呼び出されたときに決定されます。
これをグローバル コンテキストで使用する場合、多くの場合グローバル オブジェクトを指しますが、これは非常に理にかなっていますね。したがって、ブラウザのコンソールにこれを入力すると、ウィンドウがポイントされます。
関数内で使用すると、動作がまったく異なります。例: たとえば、関数「myFunction」を呼び出した場合、これは引き続きグローバル オブジェクトを指しますが、JavaScript で厳密モードを使用すると、その関数内でオブジェクトが未定義になります。
はい、かなりわかりにくいと思いますが、読み進めてください。もっと詳しく説明します。
これをメソッド (オブジェクトのプロパティである関数) 内で使用する場合、これはメソッドが属するオブジェクトを参照します。
例:
const myObject = { name: 'Alice', greet: function() { console.log(this.name); } }; myObject.greet(); // Output: 'Alice'
ここで、this.name は myObject.name、つまり「Alice」を指します。
コンストラクター: コンストラクター関数またはクラスを使用してオブジェクトを作成する場合、これは作成される新しいオブジェクトを指します。
例:
function Person(name) { this.name = name; } const person1 = new Person('Bob'); console.log(person1.name); // Output: 'Bob'
コード内では、 this.name は新しい Person オブジェクトの name プロパティを参照します。
これに関するよくある間違いの 1 つは、コールバックまたはイベント ハンドラーで正しい値が失われることです。たとえば、オブジェクトからメソッドをコールバックとして渡す場合、これはオブジェクトを参照しなくなる可能性があります。
解決策: これを回避するには、アロー関数またはバインドを使用して、これが正しいオブジェクトを指すようにします。
const myObject = { name: 'Eve', greet: function() { setTimeout(() => { console.log(this.name); }, 1000); } }; myObject.greet(); // Output: 'Eve'
this キーワードは面倒かもしれませんが、注意しなければならないのは、このキーワードを呼び出す方法と場所によって変わるということだけです。上達するには、たくさんの例を使って練習すれば、時間をかけずにプロになれるでしょう。
以上がJavaScript の this キーワードをマスターするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。