用javascript闭包的特性,可以模拟实现私有变量、私有方法。
1 var myObject = =(function(){ 2 var privateValue; 3 function privateMethod(){} 4 5 return { 6 getValue: function(){ 7 return privateValue; 8 }, 9 publicMethod: function(){} 10 }; 11 12 })();
如果继续用在简单工厂的实现里面
1 var ObjFactory = (function(){ 2 function Constructor(){ 3 var privateValue; 4 return { 5 getValue: function(){return privateValue;} 6 }; 7 } 8 9 return { 10 getInstance: function(){return Constructor();} 11 }; 12 })();
对于接口的封装有利于接口和实现的分离。即使将来改变了实现,不会影响到使用接口的代码
var aService = (function(){ function realMethod1(){} function realMethod2(){} return { method1: realMethod1, method2: realMethod2 }; })();