var result = function.apply(thisArg[, argsArray]);
Аргументы
thisArg
Задает значение this внутри функции. Если thisArg - null или undefined, то это будет глобальный объект. В ином случае, this будет равно Object(thisArg) (то есть thisArg, если thisArg уже объект, или String, Boolean или Number, если thisArg - примитивное значение соответствующего типа). Таким образом, при выполнении функции всегда соблюдается условие typeof this == 'object'.
argsArray
Массив аргументов, с которыми будет вызвана функция, или null/undefined для вызова без аргументов.
Описание, примеры
Любую функцию в яваскрипт можно вызвать в контексте любого объекта.
Используя apply, вы можете вызывать одну функцию в контексте множества различных объектов.
Метод apply очень похож на call, за исключением передачи аргументов. В apply используется массив аргументов вместо списка именованных параметров.
Используя apply, вы можете использовать литеральное объявление массива, например fun.apply(this, [name, value]).
Вы также можете использовать arguments в качестве параметра argArray. Это избавляет от необходимости знать, с какими параметрами была вызвана исходная функция.
Это используется во множестве паттернов проектирования. Например, для вызова метода родителя в ООП или для создания обертки, как в примере ниже:
Пример: Подменяем метод на такой же, но с логированием
Выделить все
// метод join будет теперь сообщать о каждом вызове
Array.prototype.join = function(){alert("Меня вызвали! Аргументов:"+arguments.length)
Array.prototype.join.apply(this, arguments)}var arr = [1,2,3]
Дежурная шутка
— Расскажите, как познакомиться в Интернете с девушкой?
— Своди ее куда—нибудь. Например, на сайт хорошего ресторана.