这是因为在as中有匿名函数这一说,在匿名函数里面加this引用,指向的并不是当前类。
package { import flash.display.Sprite; import flash.events.MouseEvent; public class ExampleApplication1_6 extends Sprite { private var _sprite:Sprite; public function ExampleApplication1_6() { trace(this); function test():void { trace(this); testabc(); } test(); } private function testabc():void { trace("testabc"); } } }
输出的结果是
[object ExampleApplication1_6] [object global] testabc
但是如果把testabc()修改成
this.testabc();
那么就会报错
TypeError: Error #1006: testabc 不是函数。 at com.dragon.cookbook.chapter01:ExampleApplication1_6/$construct/com.dragon.cookbook.chapter01:test()
所以在as中this时候要审时度势,考虑清楚在用