Reflect.apply()

The Reflect.apply() 静态方法使用指定参数调用目标函数。

试试

语法

js
Reflect.apply(target, thisArgument, argumentsList)

参数

目标

要调用的目标函数。

thisArgument

提供给 target 调用的 this 值。

argumentsList

一个 类似数组的对象,指定了应使用 target 调用的参数。

返回值

使用指定的 this 值和参数调用给定 target 函数的结果。

异常

类型错误

如果 target 不是函数或 argumentsList 不是对象,则抛出。

描述

Reflect.apply() 提供函数调用的反射语义。也就是说,Reflect.apply(target, thisArgument, argumentsList) 在语义上等效于

js
Math.floor.apply(null, [1.75]);
Reflect.apply(Math.floor, null, [1.75]);

唯一的区别是

  • Reflect.apply()target 参数而不是 this 上下文的形式获取要调用的函数。
  • 如果省略了 argumentsListReflect.apply() 会抛出异常,而不是默认调用不带参数。

Reflect.apply() 调用 target[[Call]] 对象内部方法

示例

使用 Reflect.apply()

js
Reflect.apply(Math.floor, undefined, [1.75]);
// 1;

Reflect.apply(String.fromCharCode, undefined, [104, 101, 108, 108, 111]);
// "hello"

Reflect.apply(RegExp.prototype.exec, /ab/, ["confabulation"]).index;
// 4

Reflect.apply("".charAt, "ponies", [3]);
// "i"

规范

规范
ECMAScript 语言规范
# sec-reflect.apply

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅