JavaScriptのthis

amazon:JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス

によると、thisに格納されてる値は4つのケースに分られるようだが、実質3つでいいと思う。

  • 通常のメソッド/関数の実行
  • new
  • apply/call

オブジェクトのメソッドならば、thisにはそのオブジェクトが。オブジェクトのメソッドでない関数ならば、トップレベルの環境そのものが入る。ブラウザでの実行ならば、windowオブジェクトが入るであろう。

# 実行時の環境に自由にアクセス出来るということか。怖い言語ですな。

newの場合は新しいオブジェクト。そのオブジェクトは、コンストラクタ関数のprototypeオブジェクトへの参照を含んでいる。

apply/callの場合は第一引数に指定したもの。まあ、好きな環境を指定出来ると。