【JavaScript】thisを変数に代入する理由
JavaScriptの基本編。
thisが思いもよらない動作をすることがあります。
というのをメモしていきます。
thisはオブジェクトを指します。
オブジェクト内にconsole出力をさせる関数を作った場合に
thisが何を指すのかを見ると、
thisは親のオブジェクトを指します。
では以下のように、関数(fnc1)の中に関数(fnc2,fnc3)を書いて
その中でthisが何を指すのかを見ると...
オブ...じゃなくてグローバルオブジェクト(window)を指しました。
これは思いもよらない動作です。
オブジェクトの中にいるのに突然グローバルを指してしまうのは
JavaScript特有の癖みたいで、
この仕様を理解しておかないといけないです。
このthisの動作を知ることで、ようやくthisを代入する意味が理解できます。
例えば以下のように、最初の関数内でthisをthatに代入すると
ネストされた以降の関数でもthatにthisが保持されているのでthatをthisとして利用できます。
thatに代入する以外にも、selfに代入するのも良く見ますね。