隨筆-159  評論-114  文章-7  trackbacks-0
          是直接寫在包里的函數,包里沒有類,只有函數,這樣的函數叫函數閉包
          函數在類里出現通常叫方法,


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

          例如,下面的代碼創建兩個函數:foo()(返回一個用來計算矩形面積的嵌套函數 rectArea())和 bar()(調用 foo() 并將返回的函數閉包存儲在名為 myProduct 的變量中)。即使 bar() 函數定義了自己的局部變量 x(值為 2),當調用函數閉包 myProduct() 時,該函數閉包仍保留在函數 foo() 中定義的變量 x(值為 40)。因此,bar() 函數會返回值 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

          方法的行為與函數閉包類似,因為方法也保留有關創建它們的詞匯環境的信息。當方法提取自它的實例(這會創建綁定方法)時,此特征尤為突出。函數閉包與綁定方法之間的主要區別在于,綁定方法中 this 關鍵字的值始終引用它最初附加到的實例,而函數閉包中 this 關鍵字的值可以改變。有關詳細信息,請參閱方法。

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

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 工布江达县| 日土县| 东兴市| 惠州市| 开封市| 彭山县| 和林格尔县| 来安县| 平原县| 桃江县| 潮州市| 建始县| 清镇市| 涞源县| 定日县| 红原县| 滕州市| 额尔古纳市| 瑞昌市| 牡丹江市| 三都| 惠东县| 广昌县| 英吉沙县| 台中市| 岳阳市| 柏乡县| 泸定县| 岱山县| 旬邑县| 闸北区| 南雄市| 台北市| 罗源县| 宣恩县| 华坪县| 腾冲县| 松潘县| 肇庆市| 濮阳市| 修水县|