![]() |
Prototype JavaScript Framework |
Prototype.jsのコアデベロッパのひとりであるJuriy Zaytsev氏がPerfection kills » What’s wrong with extending the DOMにおいて、次期メジャーバージョンとなるPrototype.js 2.0ではjQueryと同じオブジェクトラッパのテクニックを採用し、現在のPrototype.jsが活用しているDOMエクステンションのテクニックは採用しないことを伝えている。DOMエクステンションを採用したのは最大の失敗だったということのようだ。
DOMエクステンションはDOMオブジェクトへメソッドやプロパティを追加することをいう。直接追加することもできるが、prototype指定を使えばオブジェクトのクラスに対して追加することが可能。さまざまな利点がある方法であり活用されているシーンも多い。しかしJuriy Zaytsev氏が説明するところによれば、「クロスブラウザライブラリ」という視点になったとき、利点よりも問題点の方が突出してきたとしている。説明されている問題点はたとえば次のとおり。
| DOMエクステンションが問題となるケース |
|---|
| 確固たる仕様がなく、すべてのブラウザで対応しているとは限らない。PCであれば古いバージョンのブラウザは未対応のものがあり、モバイルデバイスになると状況はさらに複雑になる。 |
| IE6、IE7、Safari 2.xなどprototypeに対応していないブラウザ向けにはマニュアルエクステンションを実装することで回避できるが、この方法はパフォーマンスに問題がある。 |
| ブラウザにバグがあり、思ったように動作しないことがある。 |
浮き彫りになったDOMエクステンションの問題はほかのPrototype.js開発者も認識しており、詳細は定かではないものの、次はjQueryが採用しているオブジェクトラッパの方法を採用するのは妥当なところのように見えるといった説明がある。
