静态方法 Reflect
.apply()
通过指定的参数列表发起对目标(target)函数的调用。
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
语法
Reflect.apply(target, thisArgument, argumentsList)
参数
- target
- 目标函数。
- thisArgument
- target函数调用时绑定的this对象。
- argumentsList
- target函数调用时传入的实参列表,该参数应该是一个类数组的对象。
返回值
返回值是调用完带着指定参数和 this
值的给定的函数后返回的结果。
异常
如果 target
对象不可调用,抛出 TypeError
。
描述
该方法与ES5中Function.prototype.apply()
方法类似:调用一个方法并且显式地指定 this
变量和参数列表(arguments) ,参数列表可以是数组,或类似数组的对象。
Function.prototype.apply.call(Math.floor, undefined, [1.75]);
使用 Reflect.apply
方法会使代码更加简洁易懂。
使用示例
Reflect.apply()
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"
规范
Specification | Status | Comment |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) Reflect.apply |
Standard | 首次定义. |
ECMAScript Latest Draft (ECMA-262) Reflect.apply |
Draft |
浏览器兼容性
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out
https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | Server | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
apply |
Chrome Full support 49 | Edge Full support 12 | Firefox Full support 42 | IE No support No | Opera Full support 36 | Safari Full support 10 | WebView Android Full support 49 | Chrome Android Full support 49 | Firefox Android Full support 42 | Opera Android Full support 36 | Safari iOS Full support 10 | Samsung Internet Android Full support 5.0 | nodejs Full support 6.0.0 |
Legend
- Full support
- Full support
- No support
- No support