А разве у анонимной функции вообще this буде определён? Что-то ту не так.
Добавлено через 8 минут

Код AS3:
package test{
import flash.display.Sprite;
public class abra extends Sprite{
private var test1:testClass;
private var test2:testClass;
public function abra():void{
test1 = new testClass();
test2 = new testClass();
var qqq:Function = test1.a1;
var www:Function = test2.a1;
var qwe:Function = test2.a2;
var eee:Function = test1.a3;
trace("test1.a = " + test1.a + "; test2.a = " + test2.a);
qqq();
trace("test1.a = " + test1.a + "; test2.a = " + test2.a);
www();
trace("test1.a = " + test1.a + "; test2.a = " + test2.a);
qwe();
trace("test1.a = " + test1.a + "; test2.a = " + test2.a);
qqq.call(test2);
trace("test1.a = " + test1.a + "; test2.a = " + test2.a);
qqq.apply(test2);
trace("test1.a = " + test1.a + "; test2.a = " + test2.a);
eee();
trace("test1.a = " + test1.a + "; test2.a = " + test2.a);
eee.call(test2);
trace("test1.a = " + test1.a + "; test2.a = " + test2.a);
eee.apply(test2);
trace("test1.a = " + test1.a + "; test2.a = " + test2.a);
}
}
}
class testClass{
public var a:uint = 0;
public var a3:Function = function():void { a += 3; };
public function testClass(){
}
public function a1():void {
a += 1;
}
public function a2():void {
a += 2;
}
}
трейсы

Код:
test1.a = 0; test2.a = 0
test1.a = 1; test2.a = 0
test1.a = 1; test2.a = 1
test1.a = 1; test2.a = 3
test1.a = 2; test2.a = 3
test1.a = 3; test2.a = 3
test1.a = 3; test2.a = 3
test1.a = 3; test2.a = 6
test1.a = 3; test2.a = 9
Теперь мне вообще мозг рвёт, как эта анонимная функция получает доступ к this? Как это компилируется вообще? Для анонимной функции a вообще не определена, как это работает?