在Actionscript中使用内联闭包/函数委托

Sim*_*mon 5 actionscript inline-method

为什么在ActionScript中很少使用内联闭包?它们非常强大,我认为非常可读.我几乎没有看到有人使用它们,所以也许我只是在查看错误的代码.谷歌在他们的Google Maps API for Flash示例中使用它们,但我认为这是我见过它们的唯一地方.

我喜欢它们,因为您可以访问定义它们的作用域中的局部变量,并且您将逻辑保留在一个方法中,并且最终不会有许多函数,您必须为它们提供一个名称.

有没有使用它们?它们的工作方式与C#中的工作方式大致相同.

我实际上只是发现AS3支持它们,我很生气因为我以为我读过他们在AS#中被弃用了.所以我回来使用它们了!

private function showPanel(index:int):void {    

_timer = new Timer(1000, 1);        
_timer.addEventListener(TimerEvent.TIMER, function(event:Event):void 
{
    //  show the next panel
    showPanel(index++);
});
Run Code Online (Sandbox Code Playgroud)

Mit*_*ile 3

需要注意的最大问题是,在内联闭包中通常没有定义“this”。有时您可以设置“this”,但并不总是您可以设置的正确“this”,具体取决于您使用它们的方式。

但我想说的是,我所处理的大多数 Flex 代码在整个代码中都大量存在内联闭包——因为回调是完成工作的唯一方法,而且通常您不需要引入整个单独的函数。

有时当函数嵌套太多时,我会在函数中使用函数变量稍微打破它;这可以帮助我通过为函数提供标签来进行一些组织,但保留内联闭包的一些特征(例如,访问局部变量)。

希望这可以帮助。