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
上下文的形式获取要调用的函数。- 如果省略了
argumentsList
,Reflect.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 表格仅在浏览器中加载