是直接寫在包里的函數(shù),包里沒有類,只有函數(shù),這樣的函數(shù)叫函數(shù)閉包
函數(shù)在類里出現(xiàn)通常叫方法,
http://help.adobe.com/zh_CN/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f54.html
函數(shù)閉包 是一個對象,其中包含函數(shù)的快照及其“詞匯環(huán)境”。函數(shù)的詞匯環(huán)境包括函數(shù)范圍鏈中的所有變量、屬性、方法和對象以及它們的值。無論何時在對象或類之外的位置執(zhí)行函數(shù),都會創(chuàng)建函數(shù)閉包。函數(shù)閉包保留定義它們的作用域,這樣,在將函數(shù)作為參數(shù)或返回值傳遞給另一個作用域時,會產(chǎn)生有趣的結(jié)果。
例如,下面的代碼創(chuàng)建兩個函數(shù):foo()(返回一個用來計算矩形面積的嵌套函數(shù) rectArea())和 bar()(調(diào)用 foo() 并將返回的函數(shù)閉包存儲在名為 myProduct 的變量中)。即使 bar() 函數(shù)定義了自己的局部變量 x(值為 2),當(dāng)調(diào)用函數(shù)閉包 myProduct() 時,該函數(shù)閉包仍保留在函數(shù) foo() 中定義的變量 x(值為 40)。因此,bar() 函數(shù)會返回值 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ù)閉包類似,因為方法也保留有關(guān)創(chuàng)建它們的詞匯環(huán)境的信息。當(dāng)方法提取自它的實例(這會創(chuàng)建綁定方法)時,此特征尤為突出。函數(shù)閉包與綁定方法之間的主要區(qū)別在于,綁定方法中 this 關(guān)鍵字的值始終引用它最初附加到的實例,而函數(shù)閉包中 this 關(guān)鍵字的值可以改變。有關(guān)詳細信息,請參閱方法。
posted on 2009-12-29 14:29
北國狼人的BloG 閱讀(209)
評論(0) 編輯 收藏