Tim van der Lippe | 16aca39 | 2020-11-13 11:37:13 | [diff] [blame] | 1 | 'use strict'; |
| 2 | |
Tim van der Lippe | 2c89197 | 2021-07-29 15:22:50 | [diff] [blame] | 3 | var GetIntrinsic = require('get-intrinsic'); |
| 4 | var callBound = require('call-bind/callBound'); |
| 5 | |
Nikolay Vitkov | d76576c | 2024-12-02 14:10:15 | [diff] [blame^] | 6 | var $TypeError = require('es-errors/type'); |
Tim van der Lippe | 2c89197 | 2021-07-29 15:22:50 | [diff] [blame] | 7 | |
| 8 | var IsArray = require('./IsArray'); |
Tim van der Lippe | 16aca39 | 2020-11-13 11:37:13 | [diff] [blame] | 9 | |
Nikolay Vitkov | d76576c | 2024-12-02 14:10:15 | [diff] [blame^] | 10 | var $apply = GetIntrinsic('%Reflect.apply%', true) || callBound('Function.prototype.apply'); |
Tim van der Lippe | 16aca39 | 2020-11-13 11:37:13 | [diff] [blame] | 11 | |
Nikolay Vitkov | d76576c | 2024-12-02 14:10:15 | [diff] [blame^] | 12 | // https://262.ecma-international.org/6.0/#sec-call |
Tim van der Lippe | 16aca39 | 2020-11-13 11:37:13 | [diff] [blame] | 13 | |
| 14 | module.exports = function Call(F, V) { |
Tim van der Lippe | 2c89197 | 2021-07-29 15:22:50 | [diff] [blame] | 15 | var argumentsList = arguments.length > 2 ? arguments[2] : []; |
| 16 | if (!IsArray(argumentsList)) { |
| 17 | throw new $TypeError('Assertion failed: optional `argumentsList`, if provided, must be a List'); |
| 18 | } |
| 19 | return $apply(F, V, argumentsList); |
Tim van der Lippe | 16aca39 | 2020-11-13 11:37:13 | [diff] [blame] | 20 | }; |