モノリスは、名前空間を分割し、関連する属性と方法を整理するために使用されるオブジェクトです。彼女がインスタンス化できれば、彼女は一度だけインスタンス化することができます(彼女は再婚ではなく、一度しか結婚できません)。
モノリシックパターンは、JavaScriptで最も基本的で有用なパターンの1つです。
特徴:
1。名前空間を分割して、グローバル変数の危険または効果をクリアするために使用できます。
2。分岐技術を使用して、ブラウザ間の違いをカプセル化します。
3.コードは、1つの方法でより整理できるため、読みやすくしやすくなります。
シングルボディモードの基本的な書き込み:
/*最も基本的なモノマーパターン*/ var her = {name: 'anna'、sex: 'women'、say:function(){// Processing Logic ...}、dowing:function(){//その他の処理関数...}}}1。名前空間を分割します:
var box = {width:0、height:0、getarea:function(){return this.width * this.width; // JSのオブジェクトへのアクセスを表示する必要があります。つまり、これは省略できません}、init:function(w、h){// width = w; // height = h;この方法は、2つのグローバル変数を定義することと同等です(VARで宣言されていない変数はグローバル変数です)//オブジェクトの幅と高さへの割り当てではありません//次のものは正しいものです。 this.height = h;}} //ボックスは名前空間を分割し、名前空間の変数は空間でのみ有効です上記のモノマーのすべてのメンバーと方法は公開されています。つまり、モノマーの外で任意に変更することができます(ただし、ローカル変数にアクセスできません)。では、なぜモノマーは名前空間を提供するのですか?
心配しないでください、見てみましょう:
var box = {width:0、height:0、//モノマーgetarea:function(){return width * height; // width、heightはモノマー変数ではなく、initで定義されるグローバル変数} init:function(w、h){width = w; height = h;}} box.getarea(); alert(init);}initの幅と高さは初期化されていないため、エラーが報告されるため、次のように変更します。
var box = {width:0、height:0、getarea:function(){return width * height;}、init:function(w、h){width = w; height = h;}} windol.onload = function(){width = 0;大丈夫であることがわかりました。 initとgetareaが使用する幅と高さは、モノリスが所有する変数ではなく、グローバル変数であるため、影響を受けることなくモノリスの外でランダムコールを行うことができます。
var box = {width:0、height:0、getarea:function(){return width * height; // jsのオブジェクトのアクセスを表示する必要があります。 box.getarea(); alert(width);}これにより、エラーが報告されることが報告されます。上記の方法では、グローバル変数の名前空間が作成されないことがわかり、グローバル変数が危険をもたらします。したがって、一番上の単語は正しいです、確認しましょう:
var box = {width:2、height:2、getarea:function(){return this.width * this.height; / / jsアクセスは表示する必要があります。 //モノリスのローカル変数、つまり名前空間高さ= 0には影響しません。 //モノリスのローカル変数、つまりNamespace var width = box.getarea(); alert(width);}には影響しません。モノマーがモノマーの幅と高さの名前空間を確立しているため、window.onloadの幅と高さには干渉がないことがわかります。
2。メンバープロパティ:
JavaScriptにはそのような厳格なオブジェクト指向(OOP)はありませんが、閉鎖を使用して模倣することができます。結局のところ、いくつかの変数を公開することは良くありません。
var her =(function(){var name = 'anna'; var sex = 'women'; return {getarea:function(){return name + 'is a' + sex;}、init:function(b){name = b;}}}); // alert(ger.getarea()); her.init( 'lous'); alert(her.getarea());}にアクセスできません。プライベート変数とメソッドは読み取り専用ですが、パブリック変数とメソッドは読み取り可能です。
アクセス:
プライベートメンバーの場合、彼らの前に変更することなく直接アクセスできます。
パブリックアクセスのために、「これ」。モノマーの範囲の前に追加する必要があります。 (モノボディ名。)
3.ブランチテクノロジーを使用して、ブラウザ間の違いをカプセル化します
注:
a。閉鎖を使用して、瞬時の結合を実現してください
b。セミコロンで各枝を分離します
c。戻ってくる最後のことは、ブランチの名前です
d。呼び出すときに単一名 +ブランチメソッド名を使用します。
//モノマー分岐テクノロジーを使用してXHR(XMLHTTPREQUEST)オブジェクトを定義し、閉鎖を使用してvar xhr =(function(){// 3つのbranchesvar stardand = {cxhr:function(){return new xmlhttprequest();}}; ActiveXObject( 'msxml2.xmlhttp');}}; var activexold = {cxhr:function(){return new ActivexObject( 'microsoft.xmlhttp');}エラーがスローされなかった場合} catch(e){try {testobject = activexnew.cxhr(); return activexnew;} catch(e){try {testobject = activexold.cxhr(); return activexnew;} catch(e){try {testobject = activexold.cxold.cxold.cxold.cxhr() xmlhttprequestObject failed! ');上記は、編集者によって導入されたJavaScriptデザインパターンの単一体モデルの包括的な分析です。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!