要約すると、次のようになります。
1. クラス ライブラリ全体が匿名関数で定義され、グローバル変数の生成が排除されます。2. 未定義の変数の汚染を防ぎます。 3. $(...) は実際には jQuery.fn.init オブジェクトのインスタンスを返し、オブジェクトのプロトタイプを jQuery.prototype にポイントしていることがわかります (ステートメント jQuery.fn.init.prototype = jQuery. fn ) なので、生成されたインスタンスは jQuery.prototype のメソッドとプロパティを共有し、チェーン プログラミング操作を実装します。
4. 最後に、window.jQuery = window.$ = jQuery を通じて jQuery と $ をグローバル変数としてエクスポートします。
(function(window, unknown ) {
// jQuery のローカル コピーを定義します
var jQuery = (function() {
var jQuery = function(selector, context) {
// jQuery オブジェクトは実際には単なる init ですコンストラクター '拡張'
return new jQuery.fn.init(selector, context/*, rootjQuery*/);
// ...
jQuery.fn = jQuery.prototype = {
constructor : jQuery,
init : function(selector, context, rootjQuery) {
// ...
}
// ...
}; // 後でインスタンス化するために init 関数に jQuery プロトタイプを与えます
jQuery.fn.init.prototype = jQuery.fn;
// ...
// jQuery をグローバル オブジェクトに公開します
return jQuery;
})();
// ...
window.jQuery =
})(window);