隨筆-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 閱讀(210) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 根河市| 定襄县| 麻江县| 沙雅县| 济宁市| 咸宁市| 涟源市| 上思县| 安塞县| 增城市| 郓城县| 延庆县| 廊坊市| 陆河县| 如东县| 石林| 彭山县| 奈曼旗| 石阡县| 新宁县| 静乐县| 芜湖县| 澄城县| 宣武区| 阜宁县| 通许县| 陆丰市| 三门峡市| 介休市| 汽车| 鲁山县| 古田县| 太和县| 鹿泉市| 昭苏县| 大竹县| 英山县| 盘山县| 疏附县| 罗山县| 育儿|