js 模組模式

2021-07-31 17:10:45 字數 2051 閱讀 3415

var 

module

=(function();

var my=,

getname

:function()

};return my;

})();

//擴充模組

var

module

=(function(my

); return my;

})(module);

//松耦合擴充每個檔案如下結構

var

module

=(function(my

); return my;

})(module

||{});

//松耦合不能安全的覆寫模組屬性(因為沒有載入循序),

// 緊耦合擴充意味著一組載入順序,但是允許覆寫。

var

module

=(function(my

); my

.getnum

=function();

return my;

})(module);

alert(module.getname());

//轉殖

var

module_two

= (function (old

) , key;

for (key in

old)

}var super_modulemethod =

old.modulemethod;

my.modulemethod

= function () ;

return my;

}(module));

/*跨檔案私有狀態

乙個模組分割成幾個檔案有乙個嚴重缺陷。

每個檔案都有自身的私有狀態,

且無權訪問別的檔案的私有狀態。

這可以修復的。下面是乙個松耦合擴充的例子,

不同擴充檔案之間保持了私有狀態:*/

var

module

= (function (my

) , _seal =

my._seal =

my._seal || function () ,//模組載入後,呼叫以移除對_private的訪問許可權

_unseal =

my._unseal =

my._unseal || function () ;//模組載入前,開啟對_private的訪問,以實現擴充部分對私有內容的操作

//非同步呼叫

// 永久獲得 _private, _seal, and _unseal

return my;

}(module

|| {}));

//子模組

module.sub = (function () ;

// 就是多一級命名空間

return my;

}());

/*大多數高階模式可以互相組合成更多有用的模式。如果要我提出乙個複雜應用的設計模式,

我會組合松耦合、私有狀態和子模組。

這裡我還沒有涉及效能,不過我有個小建議:

但值得權衡。只要全域性正確的引入,執行效能不會有任何損失,

可能還因為區域性變數和更少的引用,加快子模組的載入。

最後,乙個例子動態載入子模組到父模組(動態建立)中。

這裡就不用私有狀態了,其實加上也很簡單。這段**允許整個複雜分成的**核

心及其子模組等平行載入完全。*/

var

util

= (function (parent

, $) ;

my.get

= function (url

, params

, callback

) ; // etc...

return

parent

; }(util

|| {}, jquery));

JS設計模式三 模組模式

模組模式是為單例模式新增私有變數和私有方法,並減少全域性變數的使用 如下就是乙個模組模式的 結構 var singlemode function 建立公有方法 function publicmethod1 function publicmethod2 返回乙個物件包含公有方法和屬性 return 複...

JS設計模式之MODULE(模組)模式

9.2module 模組 模式 通常能夠幫助我們清晰地分離和組織專案中的 單元 js中實現模組的方法 1 物件字面量表示法 2 module模式 3 amd模式 4 commonjs模組 5 ecmascript harmony模組 module模式某種程度上是基於物件的字面量 9.2.1物件字面量...

同步模組模式 非同步模組模式

模組化 將複雜的系統分解成高內聚 低耦合的模組,使系統開發變得可控 可維護 可拓展,提高模組的復用率。模組化開發是分而治之的思想,實現對複雜系統的分解,使系統隨著其功能的增加而變得可控 可拓展 可維護。這就要求我們對模組細化,隨著系統功能的增加模組的數量也隨之增加。模組開發的成本隨之減少,但是模組的...