函數(shù)表達(dá)式

函數(shù)表達(dá)式

// 特權(quán) / 共有方法和屬性
      return {
              publicProperty:function(){
              
              publicMenthod : function(){
                        privateVariable++;
                        return privateFunction();
              }
      };
 }();

這個(gè)模塊模式使用了一個(gè)返回對象的匿名函數(shù)。在這個(gè)匿名函數(shù)內(nèi)部,首先定義了私有變量和函數(shù)裂允。然后,將一個(gè)對象字面量作為函數(shù)的值返回哥艇。返回的對象字面量中只包含可以公開的屬性和方法绝编。由于這個(gè)對象是在匿名函數(shù)內(nèi)部定義的,因此它的公有方法有權(quán)訪問私有變量和函數(shù)貌踏。從本質(zhì)上來講十饥,這個(gè)對象字面量定義的是單例的公共接口。這種模式在需要對單例進(jìn)行某些初始化祖乳,同時(shí)又需要維護(hù)其私有變量時(shí)是非常有用的逗堵,例如:

      var application = function(){

            //私有變量和函數(shù)
            var components = new Array();

            //初始化
            components.push(new baseComponent());

            // 公共
            return {
                    getComponentCount : function(){
                            return components.length;
                    },

                    registerComponent : function(component) {
                             if (typeof component == "object"){
                                      components.push(component);
                             }
                    }
              };
              }();

在web應(yīng)用程序中眷昆,經(jīng)常需要使用一個(gè)單例來管理應(yīng)用程序級的信息蜒秤。這個(gè)簡單的例子創(chuàng)建了一個(gè)用于管理組件的appliaction對象。在創(chuàng)建這個(gè)對象的過程中亚斋,首先聲明了一個(gè)私有的components數(shù)組作媚,并向數(shù)組中添加了一個(gè)BasecOMponent的新實(shí)例(在這里不需要關(guān)心BaseComponent的代碼,我們只是用它來展示初始化操作)伞访。而返回對象的getComponentCount()和registerComponent()方法掂骏,都是有權(quán)訪問數(shù)組components的特權(quán)方法轰驳。前者只是返回已注冊的組件數(shù)目厚掷,后者用于注冊新組件。
簡言之级解,如果必須創(chuàng)建一個(gè)對象并以某些數(shù)據(jù)對其進(jìn)行初始化冒黑,同時(shí)還要公開一些能夠訪問這些私有數(shù)據(jù)的方法,那么就可以使用模塊模式勤哗。以這種模式創(chuàng)建的每個(gè)單例都是Object的實(shí)例抡爹,因?yàn)樽罱K要通過一個(gè)對象字面量來表示它。事實(shí)上芒划,這也沒有什么冬竟;畢竟,單例通常都是作為全局對象存在的民逼,我們不會(huì)將它傳遞給一個(gè)函數(shù)泵殴。因此,也就沒有什么必要使用instanceof操作符來檢查其對象類型了拼苍。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末笑诅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吆你,老刑警劉巖弦叶,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異妇多,居然都是意外死亡伤哺,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門者祖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來默责,“玉大人,你說我怎么就攤上這事咸包√倚颍” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵烂瘫,是天一觀的道長媒熊。 經(jīng)常有香客問我,道長坟比,這世上最難降的妖魔是什么芦鳍? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮葛账,結(jié)果婚禮上柠衅,老公的妹妹穿的比我還像新娘。我一直安慰自己籍琳,他們只是感情好鼠次,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布粗悯。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪术羔。 梳的紋絲不亂的頭發(fā)上跟啤,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天捺球,我揣著相機(jī)與錄音滑潘,去河邊找鬼。 笑死查近,一個(gè)胖子當(dāng)著我的面吹牛眉踱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播霜威,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谈喳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了侥祭?” 一聲冷哼從身側(cè)響起叁执,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤茄厘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后谈宛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體次哈,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年吆录,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了窑滞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,992評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恢筝,死狀恐怖哀卫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情撬槽,我是刑警寧澤此改,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站侄柔,受9級特大地震影響共啃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜暂题,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一移剪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧薪者,春花似錦纵苛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至纺念,卻和暖如春贝椿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背陷谱。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瑟蜈,地道東北人烟逊。 一個(gè)月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像铺根,于是被迫代替她去往敵國和親宪躯。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 定義函數(shù)的方式有兩種:函數(shù)聲明和函數(shù)表達(dá)式位迂。 函數(shù)聲明的一個(gè)重要特征就是函數(shù)聲明提升访雪,意思是在執(zhí)行代碼前會(huì)先讀取函...
    oWSQo閱讀 665評論 0 0
  • 本章內(nèi)容 函數(shù)表達(dá)式的特征 使用函數(shù)實(shí)現(xiàn)遞歸 使用閉包定義私有變量 定義函數(shù)的方式有兩種:一種是函數(shù)聲明详瑞,另一種就...
    悶油瓶小張閱讀 357評論 0 0
  • 三坝橡、模仿塊級作用域 如前所述,JS沒有塊級作用域的概念精置。下面通過例子說明: 說明:這個(gè)函數(shù)如果在Java等語言中计寇,...
    yjaal閱讀 348評論 0 0
  • 三清山: 奇、峻脂倦、險(xiǎn)番宁、清、絕赖阻、怪蝶押、凈而驚世。南清火欧、西海播聪、萬壽三園。巨蟒出山布隔、猴王獻(xiàn)寶离陶、觀音觀海(東方女神)、玉女開...
    作田夫閱讀 383評論 0 1
  • 1衅檀、你對發(fā)生的一切負(fù)百分百的責(zé)任招刨。不要執(zhí)迷于評判和抱怨。 2哀军、隨時(shí)清理沉眶。清理掉那些那些負(fù)面的能量和記憶,正面的能量...
    葉小開ld閱讀 281評論 0 0