函数调用(thisArg:*,... args)actionscript中的第一个参数用法

时间:2011-12-28 05:13:50

标签: actionscript-3 function actionscript closures

什么叫(thisArg:*,... args)第一个参数是什么意思?

假设f()在未命名的包中定义为全局函数,以下是代码片段:

package {
    public function f(message:String):void {
        trace(message);
        trace(this.watchedValue);
    }
}

测试代码如下:

public function test():void {
    var obj:Object = {watchedValue:100};
    f("invoking f");
    f.call(obj, "invoking f by call()");//actual result is undefined, but shouldn't be 100?
}

2 个答案:

答案 0 :(得分:1)

此参数仅用于闭包和匿名函数,例如

var testFunc:Function = function():void{trace(this.watchedValue)}

修改 在你的情况下它将是

package {
    public var f:Function = function(message:String):void {
        trace(message);
        trace(this.watchedValue);
    }
}

<强> EDIT2 第一个调用参数将是被调用函数。这是将fauction称为对象方法的方法。 但是当函数是方法或顶级函数时,call()的第一个参数将被忽略。要使用第一个参数,您的函数必须使用匿名函数进行变量。

答案 1 :(得分:0)

据我所知 Function.call() function()相同,但更改的范围除外this。通常this引用当前类,但它可能是另一个类。 \

您的测试功能看起来不对,应该是obj而不是o

public function test():void {
    var obj:Object = {watchedValue:100};
    f("invoking f");
    f.call(obj, "invoking f by call()");
}