Источник: https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Function/apply
Методapply()
вызывает функцию с указанным значением this
и аргументами, предоставленными в виде массива (либо массивоподобного объекта).
Примечание: хотя синтаксис этой функции практически полностью идентичен функции call(), фундаментальное различие между ними заключается в том, что функция call()
принимает список аргументов, в то время, как функция apply()
принимает простой массив с аргументами.
fun.apply(thisArg[, argsArray])
Параметры
this, предоставляемое для вызова функции fun. Обратите внимание, что this
может не быть реальным значением, видимым этим методом: если метод является функцией в нестрогом режиме, значения null и undefined будут заменены глобальным объектом, а примитивные значения будут упакованы в объекты.Вы можете присваивать различные объекты this
при вызове существующей функции. this
ссылается на текущий объект, вызвавший объект. С помощью apply
вы можете написать метод один раз, а затем наследовать его в других объектах, без необходимости переписывать метод для каждого нового объекта.
Метод apply
очень похож на метод call(), за исключением поддерживаемого типа аргументов. Вы можете использовать массив аргументов вместо набора именованных параметров. Вместе с apply
вы можете использовать литерал массива, например, fun.apply(this, ['есть', 'бананы']), либо объект Array, например, fun.apply(this, new Array('есть', 'бананы')).
Также вы можете использовать в качестве параметра argsArray
псевдомассив arguments. arguments
является локальной переменной функции. Он может использоваться для всех неопределённых аргументов вызываемого объекта. Таким образом, вы не обязаны знать, сколько и какие аргументы требует вызываемый объект при использовании метода apply. Вы можете использовать псевдомассив arguments
для передачи всех аргументов в вызываемый объект. Вызываемый объект самостоятельно разберётся с обработкой аргументов.