????????????????"????????ó???"??????????Javascript????????????????????
???????????????????????????????Э?????????????????????......????????ò??????????????????????????????????
????Javascript??黯????????????????е?????????????£?????????????????????????????????????????????д?????顣
?????????Javascript?????????黯???????????????"??"(class)????????"???"(module)???(????????е?ECMAScript????????棬????????"??"??"???"???????????????????????á?)
????Javascript????????????????????е????л????У????"???"??Ч???????????????"Javascript??黯???"???????????????????á????????????????????????????Javascript????????????????
?????????д??
??????????????????????鷽????
???????????????(?????????????)???????????????????顣
????function m1(){
????//...
????}
????function m2(){
????//...
????}
????????????m1()??m2()??????????顣??????????????????
???????????????????????"???"??????????????????????????鷢????????????????????????俴???????????
????????????д??
?????????????????????????д????????????е?????????????????????檔
????var module1 = new Object({
????_count : 0??
????m1 : function (){
????//...
????}??
????m2 : function (){
????//...
????}
????});
????????????m1()??m2()?????????module1???????????????????????????????
????module1.m1();
???????????????д??????????????????????????????д?????磬????????????????????????????
????module1._count = 5;
??????????????к???д??
???????"??????к???"(Immediately-Invoked Function Expression??IIFE)??????????????г????????
????var module1 = (function(){
????var _count = 0;
????var m1 = function(){
????//...
????};
????var m2 = function(){
????//...
????};
????return {
????m1 : m1??
????m2 : m2
????};
????})();
????????????д?????????????????????_count??????
????console.info(module1._count); //undefined
????module1??Javascript???????д???????棬???????д?????м????
????????????
????????????????????????????????????????????????????飬????б??????"?????"(augmentation)??
????var module1 = (function (mod){
????mod.m3 = function () {
????//...
????};
????return mod;
????})(module1);
?????????????module1????????????·???m3()????????μ?module1??顣
?????塢??????(Loose augmentation)
????????????????У?????????????????????????????????????????????????????????????????д???????????е?????п???????????????????????????"??????"??
????var module1 = ( function (mod){
????//...
????return mod;
????})(window.module1 || {});
??????"?????"????"??????"??"??????к???"???????????????
??????????????????
?????????????????????????????ò???????????????????????
???????????????????????????????????????????????????顣
????var module1 = (function ($?? YAHOO) {
????//...
????})(jQuery?? YAHOO);
?????????module1?????????jQuery???YUI????????????(????????????)????????????module1?????????????????????????????????????????????????????????????????μ?Ben Cherry???????JavaScript Module Pattern: In-Depth????
?????????е??????????????????????????????????????顢??????????????????