MILK2017/8/4更新JavaScriptのthisの基本的な使い方6タイトルとURLをコピーここでは、JavaScriptにおけるthisキーワードの基本的な使い方について説明します。thisは何を参照しているのかthisの値は、呼び出される際のコンテクストに依存して決まります。関数・メソッド内での呼び出し関数・メソッドで呼び出されるthisキーワードは、その関数・メソッドをプロパティとして持つオブジェクトへの参照です。関数オブジェクト内での呼び出しと、オブジェクトのメソッド内での呼び出しの2つに分けて考えることができます。オブジェクトのメソッドthisを含む関数がオブジェクトのプロパティとして(メソッドとして)呼ばれた場合、thisはそのオブジェクトを参照します。上記の場合、thisはobjを参照しており、this.greetはobj.greetとなるので、say()メソッドを実行すると「hello」と表示されます。関数オブジェクトまた、thisを含む関数がグローバルスコープで呼ばれた場合、thisはグローバルオブジェクトを参照します。次の例を見てみましょう。//Hello(window.helloと同義)グローバルスコープの関数・変数は、windowオブジェクトのプロパティとして登録されます。そのため、greet()関数をグローバルスコープで(単に関数として)呼び出した場合、thisはgreet()をプロパティとして持つwindowオブジェクトを参照します。この文脈でのthis.helloはwindow.helloと同義となり"Hello"が表示されます。メソッドと関数ではthisが参照するオブジェクトは異なりますが、呼び出し元の関数をプロパティとしてオブジェクトを参照するという点では同じです。コンストラクタ関数内でのthisインスタンスを生成する際にnew演算子を伴ってコンストラクタが呼ばれる時、コンストラクタ内のthisは新たに生成されるインスタンスを参照します。this.ageに登録しています。ここでのthisは生成されるインスタンスであるtaroを参照しているため、登録された値をインスタンス(taro)のプロパティとして利用することができます。callでの呼び出しです。このメソッドを使うと、thisの参照先を任意のオブジェクトに変更することができます。こんにちは上記の例では、obj.sayメソッド内のthisの参照先をobjからjaObjに変更しています。this.greetはjaObj.greetを参照しているので、「こんにちは」と表示されます。MILKはより良いサービスやプロダクトを作りたい人のためのメディアです。