JAvascript単例と閉パッケージ
3627 ワード
単一例は設計モードであり、一度しかインスタンス化できないオブジェクト、単一例の利点を指す.グローバル変数windowへの変数の露出を避けるには、ネーミングスペース、ネーミング競合の回避、クラスライブラリの書き込みなどに使用できます.jqueryは大きなネーミングスペースjQueryです.fn = jQuery.prototype = {..}
この例はwindowに対してただ1つのValidateUtilの名前の空間だけを暴露します匿名関数を実行し、パケットを閉じる特性
この関数により、レイアウトの幅と高さを設定しました.外部では内部変数を参照できないため、関数を実行すると、変数がすぐに解放され、メモリが節約されます.は変数をキャッシュし、変数を常にメモリに保存する .
閉パッケージは、匿名の関数を作成し、すぐに実行する単一の例の実装です.すべての変数と関数は1つの「閉パッケージ」にあります.
関数定義をカッコで囲み、関数オブジェクトを取得し、その後のカッコはすぐに実行されます.jQueryはこのように実現しています.
注意:大量に闭包を乱用してメモリの保存が急腾することができて、IEブラウザーの中でまたメモリの漏洩が现れるかもしれなくて、闭包を慎むべきです
var ValidateUtil = {
checkEmail : function(){};
checkPassword : function(){};
};
この例はwindowに対してただ1つのValidateUtilの名前の空間だけを暴露します
var initLayout = (function(){
var layoutBox = document.getElementById("layoutId");
layoutBox.style.width = window.document.clientWidth;
layoutBox.style.height = window.document.clientHeight;
})();
この関数により、レイアウトの幅と高さを設定しました.外部では内部変数を参照できないため、関数を実行すると、変数がすぐに解放され、メモリが節約されます.
var f1 = (function(){
var i = 0;
var out = function(){
console.log(i);
};
add = function(){// var
i++;
}
return out ;
}());
var out = f1; //out window , , out i, i
add();
out(); // i 1 i
閉パッケージは、匿名の関数を作成し、すぐに実行する単一の例の実装です.すべての変数と関数は1つの「閉パッケージ」にあります.
(function(){
var name = "liuxg";
var i = 0
var f = function(){ //
console.log("name="+name + " age=" + age );
}
})();
関数定義をカッコで囲み、関数オブジェクトを取得し、その後のカッコはすぐに実行されます.jQueryはこのように実現しています.
(function( window, undefined ) { ...... window.jQuery = window.$ = jQuery; // })(window);
注意:大量に闭包を乱用してメモリの保存が急腾することができて、IEブラウザーの中でまたメモリの漏洩が现れるかもしれなくて、闭包を慎むべきです