JavaScriptのthis
amazon:JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス
によると、thisに格納されてる値は4つのケースに分られるようだが、実質3つでいいと思う。
- 通常のメソッド/関数の実行
- new
- apply/call
オブジェクトのメソッドならば、thisにはそのオブジェクトが。オブジェクトのメソッドでない関数ならば、トップレベルの環境そのものが入る。ブラウザでの実行ならば、windowオブジェクトが入るであろう。
# 実行時の環境に自由にアクセス出来るということか。怖い言語ですな。
newの場合は新しいオブジェクト。そのオブジェクトは、コンストラクタ関数のprototypeオブジェクトへの参照を含んでいる。
apply/callの場合は第一引数に指定したもの。まあ、好きな環境を指定出来ると。