ひよっこPGのブログ

主に、技術メモや英語たまにギター関連のことも書いているブログです。

JavaScriptのthisについて自分なりの解釈 その2

前記事
JavaScriptのthisについて自分なりの解釈 - ひよっこPGの技術メモ・英語・ギターのブログ。

thisは、呼び出される状況によって代入されている値が異なるみたいです。

一つ分かったパターンがあるので説明してみます。


コンストラクタ関数内での thisは 生成されたオブジェクトが代入されている。

// コンストラクタ関数
var Test = function(param1){
	this.hoge = param1;
}
// Testオブジェクトを生成して、test変数に代入
var test = new Test("hogeマンです。");

alert("test.hoge : "+test.hoge);

f:id:buzzword111:20140110174446p:plain
new Test("hogeマンです。")を実行すると下記のような順番で処理が流れます。

1. 新しいオブジェクトが作られる。
2. this に1で作ったオブジェクトを代入する。
3. function内を実行する。

呼び出し元のオブジェクトがないので、新規にオブジェクトを作成してthisに代入しているみたいですね。

他サイトでの説明と関連づけ

JavaScriptの「this」は「4種類」?? - Qiita [キータ]
このサイトでの説明では

コンストラクタ呼び出しパターン

と同じことを説明しています。
new をつけた場合、thisは新規に作成されたオブジェクトを表しますが
new をつけなかった場合はグローバルオブジェクトを指すようです。newのつけ忘れには気をつけましょう。

他のパターンもその3で説明してみます。
JavaScriptのthisについて自分なりの解釈 その3 - ひよっこPGの技術メモ・英語・ギターのブログ。