くまおの森

フロントエンドで学んだこと知ったことを自分なりに噛み砕いてメモしてく技術ブログ

【JavaScript】thisを変数に代入する理由

JavaScriptの基本編。

thisが思いもよらない動作をすることがあります。

というのをメモしていきます。

 

thisはオブジェクトを指します。

オブジェクト内にconsole出力をさせる関数を作った場合に
thisが何を指すのかを見ると、
thisは親のオブジェクトを指します。

では以下のように、関数(fnc1)の中に関数(fnc2,fnc3)を書いて
その中でthisが何を指すのかを見ると...

オブ...じゃなくてグローバルオブジェクト(window)を指しました。
これは思いもよらない動作です。
オブジェクトの中にいるのに突然グローバルを指してしまうのは
JavaScript特有の癖みたいで、
この仕様を理解しておかないといけないです。

このthisの動作を知ることで、ようやくthisを代入する意味が理解できます。

例えば以下のように、最初の関数内でthisをthatに代入すると
ネストされた以降の関数でもthatにthisが保持されているのでthatをthisとして利用できます。

thatに代入する以外にも、selfに代入するのも良く見ますね。