Источник: 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
для передачи всех аргументов в вызываемый объект. Вызываемый объект самостоятельно разберётся с обработкой аргументов.