JavaScriptを勉強し直したら知らなかったことの記事を読んだ
JavaScriptを何となく使っていたので勉強し直したら知らなかったこと
もうずっと触っているはずなのにこういうの意外と知らない。
this、普段あまり使わないし、出てきてもあまり意識していなかった(VueのOptions APIとか)
関数の呼び出し元のオブジェクトがthisになる。ただし、呼び出し元のオブジェクトの指定がない場合は、windowオブジェクトがセットされる。ただし、厳格モードuse strictの場合はundefinedがセットされる
この挙動はすごいぼんやりと覚えていたけど、strictモードのときにundefinedになるのは知らなかったかも。
あと、
class 本体の中のコードは常に Strict モードで実行されるからです。
これも知らなかった。
シャローコピー/ディープコピーについては分かる、そしてディープコピーはJSON.stringify()
とJSON.parse()
を使うというのも最近知った。
他の方法はどうやるんだろう。lodash使うとかなのかな。
コンストラクタ関数に関しては、正直仕様含めこの記事で知った。
非常に紛らわしいのでコンストラクタ関数自体をあまり使いたくないのだけど、有用な使い方はあるのだろうか。
プロトタイプベースの話は最近読んだのでなんとなく把握している。
変数/関数のHoistingは、これも正直知らなくて、基本的に呼び出す関数を呼び出しの後(下)に書くようなことはしてなかったけど、functionキーワードで定義すると大丈夫なのか。
ただfunctionキーワードでの関数定義をしないようにしているので、本当に必要になるときが来るのか分からない。たぶんES5とかにコンパイルしたコードをいじったりする場合に必要になるのかなと思う。
ずっと触っているのに知らないことがたくさんあり、まだまだだなと思う。