首页 > 代码库 > javascript模块化开发初探

javascript模块化开发初探

//immediately-invoked fuction expression   iife;(function(arg){    return something;})(arg);//第二种写法 !function(arg){}(arg);//第三种写法(function(arg){}(arg)); //eg 可访问ModuleProperty moduleMethod    var Module = (function(){        var my = {},            privateVariable = 1;        function privateMethod(){        }        my.ModuleProperty = 1;        my.moduleMethod = function(){        };        return my;    }());//eg2    var Module = (function(){        var my = {},            privateVariable = 1;        function privateMethod(){        }        my = {            ModuleProperty : 1;            moduleMethod : function(){            }        }        return my;    }());    //使用对象直接量来表达    var my = {            ModuleProperty : 1;            moduleMethod : function(){            }        };    //返回一个函数 如jquery    var Cat = (function(){        //    私有成员        return function(name){            this.name = name;            this.bark = function(){};        }    }());    var tomcat = new Cat("tom");    tomcat.bark();//    var module =(function(){        var x = 1;        function f1(){}        function f2(){}        return {            publicmethod : f1,            publicmethod : f2        }    }());    //扩展    var Module = (function(my){        my.anothermothod = function(){        };        return my;    }(Module));    //松耦合扩展  如果没有定义过Module 或者不在乎加载顺序的话     var Module = (function(my){         my.anothermothod = function(){        };        return my;     }( Module || {} ));     //紧耦合扩展   定义过,并且在以前的基础上扩展 覆盖已有方法      var Module = (function(my){          var oldmothod = my.modulemethod;          my.modulemethod = function(){              //方法重载          };        return my;     }( Module ));     //克隆与继承     a     var module_two = (function(old){         //         var my = {},             key;         for( key in old ){             if(old.hasOwnPropery(key)){                 my[key] = old[key]             }         }                  var supermethod = old.modulemethod;         my.modulemethod = function(){             //重写             //supermethod         };     }(Module));     // b   Create(old);     var module_two = (function(old){                  var my = Create(old);         var supermethod = old.modulemethod;         my.modulemethod = function(){             //重写             //supermethod         };     }(Module));

 

javascript模块化开发初探