いまさらながらの・・・

モザイク時代からHTMLとお付き合いしていると、新しい動きを取りこぼすことが多々ある。JavaScriptも、どこの時代からか、DOM表現ができるようになって、

document.form(0).hoge.value="";

と書いていたものが

hoge = document.getElementId(hogeName)
hoge.hoge="";

と書けるようになっている。イベントなんかも、ブラウザーによって違うけど(というかIEだけ?)

window.addEventListener('load', init, false);

としてしまえば、

<body onload="init()">

とHTMLに記述しなくてもイベントを追加できる。


エレメントオブジェクトの取得を名前で直接指定できれば、HTMLの構造から独立できるし、イベントの指定を書かなくできれば、HTML上ではJavascriptの記述がまったくいらなくなる。これは、とてもうれしいこと。

さらに、

var basic = {
  init: function() {
    // 登録処理色々
    // 最初にしておきたい処理
  },
  hoge: function() {
    // 処理本体
  }
};

みたいに、変数に、関数を登録しておけば、名前がぶつかる心配もない。この表現になると急にオブジェクト指向って言葉が出てくるけど・・・書き方そのものは、オブジェクト指向以前からあるのに何ででしょうねぇ。ここでの使い方だと「変数に関数を登録」だけで十分なのに・・・。


以前から、Teedaで提供されているkumu.jsがどうして動作するのかなぞだった(ソース中に、':'があったり、関数を変数に代入していたり)のが、ここら辺まで理解してやっとわかった。
上に書いているような、DOM形式で、イベントも追加する形で実現しているから、アプリケーションと関係なく記述できるのね!

DOM・・・とってもうれしい技術です。遅ればせながら、感動です!
HTMLって簡単に1000行超えちゃうんで、中に、onhogehogeが混在していると、変更とか大変なんですよね。
それが、この名前のエレメントにこのイベントを追加って記述を別ファイルで書いてしまえばお終い!
(まだまだ、消化しきっていないから、色々試さないと)


でも、DOMによる直接指定は遅いとよく書かれている。たしかに、直接指定する方式と比べれば遅い気はするけど、LispみたいにすべてのElementをHashにしておけば、たぶん、旧来の形式よりアクセスは早くなる気がする。ようは実装(ブラウザ)がどう処理しているかの問題。
それに、旧来の方法では、1秒で反応するところが、直接方式だと10秒かかるとか具体的な比較数値があれば考えるけど、遅い・早いの漠然とした情報だとなんともねぇ。
むしろ、コードがすっきりして、より、高度な対応ができるようになるほうが大事な気がする。