コード内のどこからでも使用可能な、読み取り専用の変数であるthisを指します。
Javaなんかにも同じようなthis参照が存在します。
同じthis参照ですがjavascriptのは少し他と違っていて、トップレベル・関数内どちらでも使用が可能です。
■トップレベルのコードでthis参照
→グローバルオブジェクトを指します。
■関数内でのthis参照
→関数の呼び出し方によって異なってきます。
以下のとおりです。
・その他すべて
→グローバルオブジェクトを指す
・メソッドとしての呼び出し
→レシーバオブジェクト※1
・apply/call呼び出し
→apply/callの引数で指定したオブジェクト
・コンストラクタとして呼び出し
→生成されたオブジェクト
※1のレシーバオブジェクトとは、ドット演算子の前に指定したオブジェクトのことです。
具体的に言うと以下のobjがレシーバオブジェクトです。
//リテラルでオブジェクトの作成
var obj = {x:"hoge", y:function fuga(){~~~~}, z:333};
//objオブジェクトのfugaメソッド呼び出し
obj.fuga();