这个用于内部类的方法/函数vs这个在匿名函数中使用?

时间:2013-10-10 19:34:07

标签: actionscript

为什么“this”在类函数/方法中使用时的行为与在匿名函数中使用时的行为方式不同。

例如

public MyClass 
{

     function myfun()
     {
        output(this) // << will show the instance of this class but not myfun() function

        abc = function ()
        {

            output ( this ) // << will show abc function 
        }

        abc()
     }

}

那么,为什么“this”输出MyClass的实例但不输出myfun()。是什么让它与匿名函数不同?

1 个答案:

答案 0 :(得分:3)

虽然具体的语言会有所不同,但匿名内联方法背后的一般思路是编译器会创建一个新类(可能是一些随机名称,仅供自己使用),在该类中将是一个方法(同样,可能给它自己使用的一些自动生成的名称),该方法将完成匿名方法的工作。然后在匿名方法的原始调用站点中,它创建此编译器生成的类的实例,并在该类中调用适当的方法。

因此,该匿名方法的定义实际上将从另一个类型中调用,而不是从声明匿名方法的类型中调用。