Reflect.apply()
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
TheReflect.apply()
static method calls a target function with arguments as specified.
Try it
console.log(Reflect.apply(Math.floor, undefined, [1.75]));// Expected output: 1console.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: 4console.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
this
provided for the call totarget
.argumentsList
Anarray-like object specifying the arguments with which
target
should be called.
Return value
The result of calling the giventarget
function with the specifiedthis
value and arguments.
Exceptions
TypeError
Thrown if
target
is not a function orargumentsList
is 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 thetarget
parameter instead of thethis
context.Reflect.apply()
throws ifargumentsList
is omitted instead of defaulting to calling with no parameters.
Reflect.apply()
invokes the[[Call]]
object internal method oftarget
.
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;// 4Reflect.apply("".charAt, "ponies", [3]);// "i"
Specifications
Specification |
---|
ECMAScript® 2026 Language Specification # sec-reflect.apply |