Function.call()

可用性

Flash Player 6。

用法

myFunction.call(thisObject, parameter1, ..., parameterN)

参数

thisObject 指定函数体内 this 的值。

parameter1 要传递给 myFunction 的参数。可以指定零个或多个参数。

parameterN 

返回

无。

说明

方法;调用 Function 对象表示的函数。动作脚本中的每个函数都由一个 Function 对象来表示,所以所有的函数都支持此方法。

几乎在所有的情形下,函数调用运算符 (()) 都可以代替此方法来使用。函数调用运算符使代码简明易读。此方法主要用于需要显式控制函数调用的 this 参数时。通常,如果作为对象的方法调用函数,则在函数体内,this 设置为 myObject,如下所示:

myObject.myMethod(1, 2, 3);

在某些情况下,您可能希望 this 指向其它地方;例如这种情况:函数必须作为对象的方法进行调用,但该函数实际上不是作为该对象的方法存储的。

myObject.myMethod.call(myOtherObject, 1, 2, 3); 

您可以将值 null 传递给 thisObject 参数,以便作为常规函数而不是作为对象的方法来调用函数。例如,下面的函数调用是等效的:

Math.sin(Math.PI / 4)
Math.sin.call(null, Math.PI / 4)

示例

此示例使用 Function.call() 使函数表现得像另一个对象的方法,而不将此函数存储在该对象中。

function MyObject() {
}
function MyMethod(obj) {
  trace("this == obj?" + (this == obj));
}
var obj = new MyObject();
MyMethod.call(obj, obj);

trace() 动作将以下代码发送到“输出”面板:

this == obj? true