「パーフェクトJavaScript」メモ 9章 DOM

DOMは(中略)APIです。

DOMってAPIだったのか。
まあ Application Programming Interface っていわれたらそうだよなあ。なんでも Application Programming Interface といえば Application Programming Interface な気もするので、なんとも、だけど。

コラム、DOM LEVEL 0 の記述

ブラウザが先行実装したDOM機能にはプレフィクスがついている
それがFirefoxのmozとかChromewebkitとかだ。

読み飛ばそうかなと思ったコラムだが読んだら眼から鱗というほどでもないがそれに近いことが書いてあった。
mozとかのこと正直うざいなーと思ってたけど、このコラムを読んで親しみが少し沸きました

DOMツリーの中のひとつひとつのオブジェクトのことをノードと呼ぶ

つまり、ノードとはオブジェクトの一種である

要素とノードは混同しやすい。
要素とノードは継承関係。ノードがスーパータイプ。
ノードの中で、属性nodeTypeの値がELEMENT_NODE(1)のものが要素。

この本は用語の整理をかなり意識的にやっているので、自分ととても相性がいいと思って読んでます。
要素とノードの違いはかなり重要な気がする。

(getElementByTagNameとかで取得できる)NodeListオブジェクトは、ライブオブジェクトである
ライブオブジェクトは、常にDOMツリー実体への参照を持っている
なので、要素を追加したり削除したりすると、どんどん値が変わることもある

意識はしていたと思うが、どっちだっけと思うこともあるので書いておく。

ライブオブジェクトだと色々不便なので
Array.prototype.slice()
で配列に変換してから使うとよい

やばい、一度も使ったことない

NodeListをforループで使う場合はArrayオブジェクトに変換してから使うとよい
断然速い(1000個で比べてみました)

そんな大量のNodeListをループで回したことはない……100個くらいならあるかも

XPathとかはjQueryでほぼ代替できるということで今まで触れる機会がなかった、これからはどうなのか。
innerHTML は使うけど

あ、9章おわった