模块模式的思路 就是 就是单例模式添加私有属性和私有方法,减小全局变量的使用。app
简单的代码结构:函数
var singleMode = (function(){ // 建立私有变量 var privateNum = 100; // 建立私有函数 function privateFunc(){ // 实现本身的业务逻辑代码 } // 返回一个对象包含公有方法和属性 return { publicMethod1: publicMethod1, publicMethod2: publicMethod1 }; })();
若是咱们必须建立一个对象并对某些对象进行初始化时,同时还要公开访问这些私有数据的方法,name这个时候咱们就能够使用模块模式了。this
加强的模块模式的使用场合是:适合那些单列必须是某种类型的实例,同时还必须添加某些属性或方法对其加以加强的状况。spa
function CustomType() { this.name = "GaoSir"; }; CustomType.prototype.getName = function(){ return this.name; } var application = (function(){ // 定义私有 var privateA = "privateA"; // 定义私有函数 function privateMethodA(){}; // 实例化一个对象后,返回该实例,而后为该实例增长一些公有属性和方法 var object = new CustomType(); // 添加公有属性 object.publicA = "publicA"; // 添加公有方法 object.publicB = function(){ return privateA; } // 返回该对象 return object; })();
console.log(application.publicA);// publicAprototype
console.log(application.publicB()); // privateAcode
console.log(application.name); // GaoSir对象
console.log(application.getName());// GaoSirblog