The Reflect.apply() static method calls a target function with arguments as specified.
Reflect.apply()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
Try it
console.log(Reflect.apply(Math.floor, undefined, [1.75]));
// Expected output: 1
console.log(
Reflect.apply(String.fromCharCode, undefined, [104, 101, 108, 108, 111]),
);
// Expected output: "hello"
console.log(
Reflect.apply(RegExp.prototype.exec, /ab/, ["confabulation"]).index,
);
// Expected output: 4
console.log(Reflect.apply("".charAt, "ponies", [3]));
// Expected output: "i"
Syntax
Reflect.apply(target, thisArgument, argumentsList)
Parameters
target-
The target function to call.
thisArgument-
The value of
thisprovided for the call totarget. argumentsList-
An array-like object specifying the arguments with which
targetshould be called.
Return value
The result of calling the given target function with the specified this value and arguments.
Exceptions
TypeError-
Thrown if
targetis not a function orargumentsListis not an object.
Description
Reflect.apply() provides the reflective semantic of a function call. That is, Reflect.apply(target, thisArgument, argumentsList) is semantically equivalent to:
Math.floor.apply(null, [1.75]); Reflect.apply(Math.floor, null, [1.75]);
The only differences are:
-
Reflect.apply()takes the function to call as thetargetparameter instead of thethiscontext. -
Reflect.apply()throws ifargumentsListis omitted instead of defaulting to calling with no parameters.
Reflect.apply() invokes the [[Call]] object internal method of target.
Examples
Using 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"
Specifications
Browser compatibility
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | Deno | Node.js | |
apply |
49 | 12 | 42 | 36 | 10 | 49 | 42 | 36 | 10 | 5.0 | 49 | 1.0 | 6.0.0 |
See also
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/apply