>.英文原文:articles/scope_in_javascript/作用域(scope)是JavaScript語言的基石之一,在構(gòu)建復(fù)雜程序時也可能是最令我頭痛的東西。記不清多少次在函數(shù)之間傳遞控制后忘記">
javascript中的作用域--.

javascript中的作用域--.

ID:9509124

大?。?2.50 KB

頁數(shù):9頁

時間:2018-05-01

javascript中的作用域--._第1頁
javascript中的作用域--._第2頁
javascript中的作用域--._第3頁
javascript中的作用域--._第4頁
javascript中的作用域--._第5頁
資源描述:

《javascript中的作用域--.》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。

1、JavaScript中的作用域>>.英文原文:articles/scope_in_javascript/作用域(scope)是JavaScript語言的基石之一,在構(gòu)建復(fù)雜程序時也可能是最令我頭痛的東西。記不清多少次在函數(shù)之間傳遞控制后忘記this關(guān)鍵字引用的究竟是哪個對象,甚至,我經(jīng)常以各種不同的混亂方式來曲線救國,試圖偽裝成正常的代碼,以我自己的理解方式來找到所需要訪問的變量。這篇文章將正面解決這個問題:簡述上下文(context)和作用域的定義,分析可以讓我們掌控上下文的兩種方法,最后深入一種高效的

2、方案,它能有效解決我所碰到的90%的問題。我在哪兒?你又是誰JavaScript程序的每一個字節(jié)都是在這個或那個運行上下文(executioncontext)中執(zhí)行的。你可以把這些上下文想象為代碼的鄰居,它們可以給每一行代碼指明:從何處來,朋友和鄰居又是誰。沒錯,這是很重要的信息,因為JavaScript社會有相當嚴格的規(guī)則,規(guī)定誰可以跟誰交往。運行上下文則是有大門把守的社區(qū)而非其內(nèi)開放的小門。我們通??梢园堰@些社會邊界稱為作用域,并且有充足的重要性在每一位鄰居的憲章里立法,而這個憲章就是我們要說的上下文

3、的作用域鏈(scopechain)。在特定的鄰里關(guān)系內(nèi),代碼只能訪問它的作用域鏈內(nèi)的變量。與超出它鄰里的變量比起來,代碼更喜歡跟本地(local,即局部)的打交道。具體地說,執(zhí)行一個函數(shù)會創(chuàng)建一個不同的運行上下文,它會將局部作用域增加到它所定義的作用域鏈內(nèi)。JavaScript通過作用域鏈的局部向全局攀升方式,在特定的上下文中解析標識符。這表示,本級變量會優(yōu)先于作用域鏈內(nèi)上一級擁有相同名字的變量。顯而易見,當我的好友們一起談?wù)摗盡ikeeoa_celebrity="Everyonecanseeme!I'm

4、famous!",the_president="I'mthedecider!";functionpleasantville(){varthe_mayor="IrulePleasantvillea_celebrity="Allmyneighborskno!";functionlonely_house(){varagoraphobic="Ifearthedaystar!",a_cat="Meog_celebrity,家喻戶曉(所有人都認識她)。她在政治上積極活躍,敢于在一個相當頻繁的基層上叫囂總統(tǒng)(即the_

5、president)。她會為碰到的每一個人簽名和回答問題。就是說,她不會跟她的粉絲有私下的聯(lián)系。她相當清楚粉絲們的存在并有他們自己某種程度上的個人生活,但也可以肯定的是,她并不知道粉絲們在干嘛,甚至連粉絲的名字都不知道。而在歡樂市(pleasantville)內(nèi),市長(the_mayor)是眾所周知的。她經(jīng)常在她的城鎮(zhèn)內(nèi)散步,跟她的選民聊天、握手并親吻小孩。因為歡樂市(pleasantville)還算比較大且重要的鄰居,市長在她辦公室內(nèi)放置一臺紅色,它是一條可以直通總統(tǒng)的7×24熱線。她還可以看到市郊外山

6、上的孤屋(lonely_house),但從不在意里面住著的是誰。而孤屋(lonely_house)是一個自我的世界。曠恐患者時常在里面囔囔自語,玩紙牌和喂養(yǎng)一個小貓(a_cat)。他偶爾會給市長(the_mayor)打咨詢一些本地的噪音管制,甚至在本地新聞看到img_celebrity后會寫些粉絲言語給她(當然,這是pleasantville內(nèi)的img_celebrity)。this?那是蝦米?每一個運行上下文除了建立一個作用域鏈外,還提供一個名為this的關(guān)鍵字。它的普遍用法是,this作為一個獨特的功

7、能,為鄰里們提供一個可訪問到它的途徑。但總是依賴于這個行為并不可靠:取決于我們?nèi)绾芜M入一個特定鄰居的具體情況,this表示的完全可能是其他東西。事實上,我們?nèi)绾芜M去鄰居家本身,通常恰恰就是this所指。有四種情形值得特別注意:呼叫對象的方法在經(jīng)典的面向?qū)ο缶幊讨?,我們需要識別和引用當前對象。this極好地扮演了這個角色,為我們的對象提供了自我查找的能力,并指向它們本身的屬性。<scripttype="text/javascript">123下一頁[這篇文章來自..,]vardeep_thought=

8、{the_anseaning=deep_thought.ask_question();</script><scripttype="text/javascript">vardeep_thought={the_anseaning=deep_thought.ask_question();</script>這個例子建立了一個名為deep_thought的對象,設(shè)置其屬性the_ansethod)。當deep_thou

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。