是直接寫在包里的函數,包里沒有類,只有函數,這樣的函數叫函數閉包
函數在類里出現通常叫方法,
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 閱讀(209)
評論(0) 編輯 收藏