個(gè)人博客遷移到biubu.cn,此處停更.請(qǐng)移步。
-
1 . 公有方法改變私有變量 :
- Module 模式使用閉包封裝"私有" 狀態(tài)和組織.它提供了一中包裝混合公有/私有方法和變量的方式,防止其泄露到全局作用域,防止與別的開發(fā)人員的接口發(fā)生沖突,通過該模式,只需返回一個(gè)公有API,而其他的一切則都維持在私有閉包里.我們來看一段代碼:
var testModule = (function () {
var count = 0; // 私有變量
return { // 返回一個(gè)對(duì)象
incrementCount: function () { // 公有方法
return ++count;
},
reserCount: function () { // 公有方法
console.log ( "重置前 count 的值為 : " + count ); // 輸出內(nèi)容為 : 重置前 count 的值為 : 1
count = 0;
}
};
})();
testModule.incrementCount (); // 公有 API 調(diào)用, 執(zhí)行 ++count;
testModule.reserCount (); // 公有 API 調(diào)用, 執(zhí)行 count = 0;
- 通過以上的代碼可以看出,要修改count的值,除了上述兩個(gè)公有方法外,別無他法.這就是模塊化的好處,count 變量是完全與全局作用域隔離的,因此他表現(xiàn)的就像是一個(gè)似有變量,既不會(huì)污染全局變量,又不會(huì)與其他的變量沖突.
-
2 . 調(diào)用私有變量和方法的公有函數(shù)
var myNameSpace = (function () {
var myPrivateVar = 0;
var myPrivateMethod = function ( params ) {
console.log ( params ); // 公有方法(myPublicMethod)調(diào)用私有方法(myPrivateMethod);執(zhí)行公有方法,改變后的私有變量值為 1
};
return {
myPublicVar: 'params',
myPublicMethod: function ( bar ) {
myPrivateVar++;
myPrivateMethod ( '公有方法(myPublicMethod)調(diào)用私有方法(myPrivateMethod);' + bar + ', 累加后的私有變量值為 ' + myPrivateVar );
}
};
}) ();
myNameSpace.myPublicMethod ( '執(zhí)行公有方法' ); // 公有方法(myPublicMethod)調(diào)用私有方法(myPrivateMethod);執(zhí)行公有方法, 累加后的私有變量值為 1
console.log ( '公有變量(myNameSpace.myPublicVar)為 : ' + myNameSpace.myPublicVar ); //公有變量(myNameSpace.myPublicVar)為 : params
console.log ('訪問私有變量結(jié)果為 : ' + myNameSpace.myPrivateVar ); // 訪問私有變量結(jié)果為 : undefined
通過上面的例子,應(yīng)該對(duì)私有變量、公有變量和公有變量調(diào)用似有變量和私有屬性有所了解了吧.