追記です。もう1つグローバルオブジェクトの書き換えがありました。
XMLHttpRequest が存在しないとき、XMLHttpRequest を ActiveXObject("Microsoft.XMLHTTP")
を生成する関数にします。
jQuery: The Write Less, Do More, JavaScript LibraryjQuery 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 Librariesundefined (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 が書き換わるタイミングや順番を注意するというところでしょうか。