JavaScript設計モードの単例モードを学ぶ

1741 ワード

一、定義
クラスにインスタンスが1つしかないことを保証し、そのグローバル・アクセス・ポイントにアクセスします.ログインボタンをクリックすると、ページにログインフローティングウィンドウが表示されます.このログインフローティングウィンドウは唯一です.何度ログインボタンをクリックしても、このフローティングウィンドウは1回しか作成されません.このログインフローティングウィンドウは、単一のモードで作成するのに適しています.
二、実現原理
単一のインスタンスを実装するには、現在クラスにオブジェクトが作成されているかどうかを示す変数を使用します.そうであれば、次のクラスのインスタンスを取得するときに、前に作成したオブジェクトを直接返します.
三、偽単例
グローバル変数は単例モードではありませんが、JavaScript開発では、グローバル変数を単例として使用することがよくあります.

var a = {};


グローバル変数によるネーミング汚染の低減(1)ネーミングスペースの使用

var namespace1 = {
  a: function(){},
  b: 2
}

(2)クローズドパッケージを使用したプライベート変数

var user = (function() {
  var _name = 'lee',
    _age = '25';
  return {
    getUserInfo: function() {
      return _name + ":" + _age;
    }
  };
})();

四、不活性な単一例:必要に応じてオブジェクトインスタンスを作成する

var getSingle = function(fn) {
  var result;
  return function() {
    return result || (result = fn.apply(this, arguments));
  };
};

//   
function testSingle(){}
getSingle(testSingle)() === getSingle(testSingle)();  // true


五、補充:
(1)怠惰負荷

var lazyload = function() {
  console.log(1);
  lazyload = function() {
    console.log(2);
  }
  return lazyload();
}

lazyload();

(2)プリロード

var preload = (function() {
  console.log(1);
  preload = function() {
    console.log(2);
  };
  return preload;
})();

preload();

この文書ではjavascriptプログラムの設計を学ぶのに役立つことを願っています.