日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

[Js代码风格]浅析模块模式

發(fā)布時(shí)間:2025/3/21 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Js代码风格]浅析模块模式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.實(shí)例解釋模塊模式

簡(jiǎn)明扼要的說,經(jīng)典的模塊模式指的定義一個(gè)立即執(zhí)行的匿名函數(shù)。在函數(shù)中定義私有函數(shù)和私有變量并且返回一個(gè)包含公共變量和公共函數(shù)作為屬性和方法的匿名對(duì)象。

var classicModulePattern = function(){var privateVar = 1;function privateFunction(){alert('private');}return {publicVar:2,publicFunction:function(){classicModulePattern.anotherPublicFunction(); },anotherPublicFunction:function(){privateFunction();}} }(); classicModulePattern.publicFunction();

這種形式也經(jīng)常令人抱怨,因?yàn)槊慨?dāng)需要在一個(gè)公共方法調(diào)用另一個(gè)公共方法或者獲取公共變量,就需要重復(fù)主對(duì)象的名字。另外一個(gè)比較苦惱的原因是你不得不把返回的公共函數(shù)或變量寫成對(duì)象字面量的形式。

為了解決重復(fù)寫主對(duì)象名字的問題,可以定義一個(gè)命名為“pub”的對(duì)象,在其上添加公共方法和公共屬性,然后return這個(gè)對(duì)象。

var namedObjectModulePattern = function(){var pub = {};var privateVar = 1;function privateFunction(){alert('private');};pub.publicVar = 2;pub.publicFunction = function(){pub.anotherPublicFunction(); };pub.anotherPublicFunction = function(){privateFunction();};return pub; }(); namedObjectModulePattern.publicFunction();

但是,添加一個(gè)pub對(duì)象看起來(lái)有些冗余,可以采用另一種方法,在私有作用域中定義所有的函數(shù)和變量,然后在模塊末尾返回一個(gè)匿名對(duì)象,可以在其中指向某些私有變量和函數(shù)作為公共變量和函數(shù)。

var revealingModulePattern = function(){var privateVar = 1;function privateFunction(){alert('private');};var publicVar = 2;function publicFunction(){anotherPublicFunction(); };function anotherPublicFunction(){privateFunction();};// reveal all things private by assigning public pointersreturn {publicFunction:publicFunction,publicVar:publicVar,anotherPublicFunction:anotherPublicFunction} }(); revealingModulePattern.publicFunction();

這樣保持了整個(gè)腳本連續(xù)性并且使哪些函數(shù)和變量是公共的看起來(lái)一目了然。另一個(gè)好處是你能用你想要的命名來(lái)展示這些私有函數(shù),增強(qiáng)了可讀性。

var revealingModulePattern = function(){var privateVar = 1;function privateFunction(){alert('private');};var publicVar = 2;function publicFunction(){anotherPublicFunction(); };function anotherPublicFunction(){privateFunction();};// reveal all things private by assigning public pointersreturn {init:publicFunction,count:publicVar,increase:anotherPublicFunction} }(); revealingModulePattern.init();

你甚至可以在匿名對(duì)象中調(diào)用函數(shù)返回一個(gè)值作為公共屬性。

var revealingModulePattern = function(){var privateVar = 1;function privateFunction(){alert('private');};var publicVar = 2;function publicFunction(){anotherPublicFunction(); };function anotherPublicFunction(){privateFunction();};function getCurrentState(){return 2;};// reveal all things private by assigning public pointersreturn {init:publicFunction,count:publicVar,increase:anotherPublicFunction,current:getCurrentState()} }(); alert(revealingModulePattern.current) // => 2 revealingModulePattern.init();

2.參考資料

實(shí)例參考博客

stackoverflow命名空間

轉(zhuǎn)載于:https://www.cnblogs.com/lijie33402/p/4685327.html

總結(jié)

以上是生活随笔為你收集整理的[Js代码风格]浅析模块模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。