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" } );
这里的文档是错误的,或者我没有正确理解它。你能解释一下吗?
答案 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" } );