JavaScript第5版読書会#1
JavaScript第5版読書会#1へ行ってきた。
大阪で平日の夜なのに、18時半には30人以上も集まっていたよ(驚)
読書会の内容は、JavaScriptの辞書である通称「サイ本」を最初から読むこと。
3時間の議論はすごく中身が濃かった。
その時の感想をメモ。
【1】JavaScriptは、他の言語と文法が微妙に違う所を認識していないのが、バグの温床になる
変数、メソッド、オブジェクト、配列、ハッシュなど、最初から読むが、僕には退屈。
20章「HTTPによる制御」にあるAjaxを早く読みたかった。
でも、主催者のkanasanから、Ajaxでバグにはまる原因はJavaScriptの文法をきちんと理解していないからですよ、と言われた。
確かに、JavaScriptのブロックは、CやJavaと異なる。
つまり、IF文などの制御構造で定義したローカル変数は、グローバル変数に近い。
また、暗黙の型変換をすごく多用する。
よくあるパターンは、変数に「!!」を使うと論理型へ型変換する。
prototype.jsでも「!!」は良く出てくる。
【2】JavaScriptのオブジェクトは、インスタンスそのもの
~nullでなくundefinedがある理由
JavaScriptのオブジェクトは、ハッシュに近い。
つまり、image.width と image["width"] は同じ。
これによって、プロパティを動的にいじることが出来る。
また、オブジェクトのプロパティにfunctionを設定できる。
つまり、データと関数は同じ意味を持つ。
Ajaxでも、HTTPリクエストのプロパティへ手続きを設定する仕組みを使う。
例えば、GMailのように、ブラウザをリフレッシュせずに非同期でサーバーから最新メール情報を取得する。
JavaScriptのオブジェクトは、コンストラクタをあまり意味がない。
何故なら、必ずインスタンスがあるから。
thisオブジェクトは神様みたいなオブジェクト。
ブラウザ上では必ずオブジェクトはあるみたい。
JavaScriptでは、JavaのNullPoniterExceptionに当たるエラーとして、undefinedが良く出る。
これは、該当するインスタンスが見つからないと言う意味。
また、JavaScriptの継承は、プロトタイプチェーンと呼ぶ。
JavaやC++、Rubyの継承とは異なる。
この辺りも面白い。
【3】最近のWeb開発のトレンドがサーバーサイドからリッチUIクライアントへ移行しつつある
Ajaxが出現するまで、JavaScriptは使えない言語だった。
メモリリークは良く出るし、ブラウザ依存だし、使い勝手が悪かった。
でも、Web開発のトレンドがサーバーサイドからリッチUIクライアントへ移行しつつある今、JavaScriptは重要な意味を持つ。
Googleがやり始めたことは、リッチUIクライアントを操作する言語としてJavaScriptを使い、サーバーサイドからUIクライアントのJavaScriptソースコードを自動生成する仕組みを導入したこと。
Google Web Toolkitも発想は同じ。
Railsにある、RJSも全く同じ。
この発想は、JavaやRubyが、JavaScriptという他言語を生成するという、いわゆるメタプログラミング。
でも、サーバーサイドがクライアントよりも主導権を握るという従来のWeb開発スタイルは踏襲している。
この流れならば、リッチUIクライアントであろうとも、サーバーサイドから制御できるだろう。
Web開発のトレンドは今、JavaScriptが表舞台にいるのかもしれない。
【番外編】
「JavaScript 第5版」によく出てくるリファレンス本は下記になる。
持っておくと便利かも。
| 固定リンク
「プログラミング」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのモジュールシステムは複雑性をより増している(2022.09.10)
- Javaはなぜ関数型言語になろうとしているのか(2022.09.02)
- Javaのラムダ式の考え方(2022.08.10)
- Javaはオブジェクト指向言語ではなく関数型言語だった~「[増補改訂]関数プログラミング実践入門」はお勧めの本だ(2022.08.06)
コメント
読書会お疲れさまです。今回の読書会は、Kanasan.JSで対応できなかった初心者・初級者に、どう対応するかを思案した結果、開催されたものです。このため、途中の章からではなく最初からの通読となっています。Ajaxの章、読みたいですよね。私も読みたいです。ただ、最初からコツコツといくことが主催者の責務だと思っています。御理解頂けますようお願いします。
それでは。
投稿: kanasan | 2007/11/24 09:24
>kanasanさん
レスありがとうございます!
JavaScriptの基本も知らなかった自分にとって、非常にレベルが高く面白い勉強会でした。
こちらこそよろしくお願いします\(^o^)/
投稿: あきぴー | 2007/11/25 10:00