ActionScript里面嵌套了这个函数

时间:2015-02-19 12:04:44

标签: actionscript-3 flash actionscript nested-function ecma262

ActionScript 3语言规范声明:

  

在ECMA-262第3版中,当它出现在嵌套函数中时,如果函数是通过词法调用而没有显式接收器对象,则它将绑定到全局对象。在ActionScript 3.0中,当函数以词法方式调用时,它将绑定到最里面的嵌套。

(资料来源:http://help.adobe.com/livedocs/specs/actionscript/3/wwhelp/wwhimpl/js/html/wwhelp.htm

但是我尝试了以下内容,我的结果不是我对上面句子的期望 - 嵌套函数中的this绑定到全局对象:

     function f():void
     {
        trace("f() this.a", this.a); // "ok"
        function g():void { trace("g() this.a", this.a); } // "undefined"
        g();
     }
     f.call( { a: "ok" } );

这里的文档是错误的,或者我没有正确理解它。你能解释一下吗?

1 个答案:

答案 0 :(得分:0)

我认为这种情况是对Object的引用,而不是嵌套函数的概念。

如果您尝试:

 function f(target:Object):void
 {
     trace("f() this.a", target.a); // "ok"
     function g():void { trace("g() this.a", target.a); } // "ok"
     g();
 }

 f( { a: "ok" } );