2007-06-17

jQueryのグローバルオブジェクトとオブジェクト書き換えの範囲

jQuery: The Write Less, Do More, JavaScript Library
jQuery is a fast, concise, JavaScript Library that simplifies how you traverse HTML documents, handle events, perform animations, and add Ajax interactions to your web pages. jQuery is designed to change the way that you write JavaScript.
jQuery は JavaScript ライブラリの中で、グローバルオブジェクトとオブジェクト書き換えが少なく、他の JavaScript ライブラリとの親和性が高いと聞いたことがあります。そこで jQuery 1.1.2 のソースコードを読みながら、グローバルオブジェクトとオブジェクト書き換えの範囲を調べてみました。

jQuery というグローバルオブジェクトがあり、このオブジェクトは $ として参照できます。ただし $ というオブジェクトは、他の多くの JavaScript ライブラリも使っているため書き換える可能性があります。

jQuery はこの問題を利用者の判断で回避できるような仕組みを提供しています。jQuery.noConflict() を使うと、$ が参照する jQuery 無効にして jQuery を取り込む直前の $ オブジェクトを回復します。Using jQuery with Other Libraries

undefined (window.undefined) という undefined を表すグローバルオブジェクトがあります。jQuery の中での undefined とは、この undefined オブジェクトを使って判定しています。

jQuery.event を使ってイベントを操作すると、指定した element に $events というオブジェクトを追加します。この $events は追加したイベントハンドラを保持します。さらに element の onXxxx を jQuery.handle に書き換えて、イベントをフックします。なお、既存の onXxxx の値は $events の1つとして保持します。

以上です。

$ オブジェクトの書き換えは jQuery.noConflict() を使って回避し、直接 jQuery オブジェクトを参照すればよいですね。window.undefined は実害はないでしょう。element の $events オブジェクトの書き換えを回避することはできないので、element の onXxxx が書き換わるタイミングや順番を注意するというところでしょうか。

Learning  jQuery: Better Interaction Design and Web Development With Simple Javascript TechniquesLearning jQuery: Better Interaction Design and Web Development With Simple Javascript Techniques
Jonathan Chaffer Karl Swedberg

Jquery Reference Guide Jquery in Action 2ちゃんねるはなぜ潰れないのか? (扶桑社新書 14) デザイニング・インターフェース ―パターンによる実践的インタラクションデザイン 初めてのJavaScript―Ajax&DOM対応

by G-Tools

0 件のコメント: