0

为什么“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() 。它与匿名函数有何不同?

4

1 回答 1

3

虽然具体情况因语言而异,但匿名内联方法背后的一般想法是编译器将创建一个新类(可能给定一些随机名称,仅供其自己使用),该类内部将是一个方法(再次,可能会给出一些自动生成的名称供自己使用)并且该方法将完成匿名方法的工作。然后在匿名方法的原始调用站点中,它创建此编译器生成的类的实例并调用该类中的适当方法。

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

于 2013-10-10T20:23:10.017 回答