The Reflect.apply() static method calls a target function with arguments as specified.
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"Reflect.apply(target, thisArgument, argumentsList)targetThe target function to call.
thisArgumentThe value of this provided for the call to target.
argumentsListAn array-like object specifying the arguments with which target should be called.
The result of calling the given target function with the specified this value and arguments.
TypeErrorThrown if target is not a function or argumentsList is not an object.
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 the target parameter instead of the this context.Reflect.apply() throws if argumentsList is omitted instead of defaulting to calling with no parameters.Reflect.apply() invokes the [[Call]] object internal method of target.
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"