隨筆-159  評(píng)論-114  文章-7  trackbacks-0
          是直接寫(xiě)在包里的函數(shù),包里沒(méi)有類(lèi),只有函數(shù),這樣的函數(shù)叫函數(shù)閉包
          函數(shù)在類(lèi)里出現(xiàn)通常叫方法,


          http://help.adobe.com/zh_CN/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f54.html
          函數(shù)閉包 是一個(gè)對(duì)象,其中包含函數(shù)的快照及其“詞匯環(huán)境”。函數(shù)的詞匯環(huán)境包括函數(shù)范圍鏈中的所有變量、屬性、方法和對(duì)象以及它們的值。無(wú)論何時(shí)在對(duì)象或類(lèi)之外的位置執(zhí)行函數(shù),都會(huì)創(chuàng)建函數(shù)閉包。函數(shù)閉包保留定義它們的作用域,這樣,在將函數(shù)作為參數(shù)或返回值傳遞給另一個(gè)作用域時(shí),會(huì)產(chǎn)生有趣的結(jié)果。

          例如,下面的代碼創(chuàng)建兩個(gè)函數(shù):foo()(返回一個(gè)用來(lái)計(jì)算矩形面積的嵌套函數(shù) rectArea())和 bar()(調(diào)用 foo() 并將返回的函數(shù)閉包存儲(chǔ)在名為 myProduct 的變量中)。即使 bar() 函數(shù)定義了自己的局部變量 x(值為 2),當(dāng)調(diào)用函數(shù)閉包 myProduct() 時(shí),該函數(shù)閉包仍保留在函數(shù) foo() 中定義的變量 x(值為 40)。因此,bar() 函數(shù)會(huì)返回值 160,而不是 8。

          function foo():Function
          {
             var x:int = 40;
             function rectArea(y:int):int // function closure defined
             {
                 return x * y
             }  
             return rectArea;
          }
          function bar():void
          {
             var x:int = 2;
             var y:int = 4;
             var myProduct:Function = foo();
             trace(myProduct(4)); // function closure called
          }
          bar(); // 160

          方法的行為與函數(shù)閉包類(lèi)似,因?yàn)榉椒ㄒ脖A粲嘘P(guān)創(chuàng)建它們的詞匯環(huán)境的信息。當(dāng)方法提取自它的實(shí)例(這會(huì)創(chuàng)建綁定方法)時(shí),此特征尤為突出。函數(shù)閉包與綁定方法之間的主要區(qū)別在于,綁定方法中 this 關(guān)鍵字的值始終引用它最初附加到的實(shí)例,而函數(shù)閉包中 this 關(guān)鍵字的值可以改變。有關(guān)詳細(xì)信息,請(qǐng)參閱方法。

          posted on 2009-12-29 14:29 北國(guó)狼人的BloG 閱讀(215) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 南开区| 新竹市| 南靖县| 沙田区| 河曲县| 屯昌县| 五华县| 泸西县| 密云县| 阿城市| 阳城县| 佛山市| 抚顺县| 东丰县| 边坝县| 建瓯市| 辰溪县| 本溪| 宜川县| 洪洞县| 汝城县| 南澳县| 霍林郭勒市| 曲阜市| 隆子县| 化德县| 肇庆市| 康马县| 阳东县| 大渡口区| 若羌县| 五常市| 涿州市| 柏乡县| 玛多县| 京山县| 墨脱县| 台中市| 武定县| 太湖县| 祁阳县|