カメニッキ

カメとインコと釣りの人です

javascriptにおけるthis参照について

コード内のどこからでも使用可能な、読み取り専用の変数である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();