什么叫(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?
}
答案 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()");
}