sakaharaのブログ

アプリ開発に関する話や日々の出来事など

1日でJavaScriptを理解するために「パーフェクトJavaScript」を読んでみた

ここ数年アプリの仕事ばかりやってて、Web周りの知識が乏しくなりつつあったんですが、仕事で必要になりそうなこともあり重い腰を上げました。 ホント久々に丸1日好きにできる時間を持てたので、どうやって学ぶかいろいろ考えたんですが、 結局会社にあった「パーフェクトJavaScript」をひたすら読むことに。

オライリーJavaScript 第6版」が一番よさそうでしたが、ボリュームが840ページと分厚いので今回は断念。

結局part3までを読むのが精一杯でしたが、ここまで読んだ感想としてはなかなかの良書だと思います。 Javaとの比較をしながらの説明がJavaをよく知っている自分からすると理解しやすく助かりました。 2011年出版の本ですが、言語仕様についてはECMAScript 第5版の説明が中心でJavaScriptの独自拡張については別途説明をする形をとっており、 今時のブラウザならほぼサポートしてるので安心して読めました。

各ブラウザの対応状況はこちらを参照。

http://kangax.github.io/compat-table/es5/

本書を読んでJavaScriptの言語仕様で気になった部分はこんな感じでした

  • 関数型プログラミングをサポートしてるけど、再帰処理はパフォーマンスの観点から使用することを勧めていなかった・・・
  • undefined型は潜在的なバグを生む可能性が高そうだしなんとかならないか?
  • thisの扱いを間違えるとハマりそう
  • 存在しないプロパティ名を指定して値を代入するだけでプロパティが追加できるのはすごい
  • アクセス修飾子(private, public)がない
  • 名前空間をサポートしてないので、クロージャ使って隠蔽するなどの対応が必要でなんだか面倒
  • アクセッサはあるらしい(これもクロージャで隠蔽する必要あり)

再帰処理の最適化については気になったのでググってみるとECMAScript 第6版からサポートしてるようでした。

http://qiita.com/pebblip/items/cf8d3230969b2f6b3132

JavaScriptガベージコレクションがどうなってるのかも興味あったのですが、すでにお腹いっぱいなので別の機会に。

継承の仕方も一つじゃなくていくつか方法あったりと何かと自由度高いですが、言語レベルで規定されてる方が迷わなくて個人的にはありがたい・・・。

最後に正直1日で理解って厳しいけど、それくらいの気概でいくと時間の使い方とか意識するし、最短で理解する努力もできるのでオススメです。 (ようはやる気の問題かも)