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]
Это интересно
Сегодня в интернете больше миллиарда сайтов. Правда, около 75% сайтов из этого миллиарда лишь зарегистрированы, но не работают. Несмотря на то, что в последнее десятилетие число пользователей интернета росло огромными темпами, больше половины жителей Земли всё ещё не имеют доступа в интернет. Среди них 730 млн. китайцев, 210 млн. индонезийцев и 50 млн. жителей США. В Индии интернета до сих нет у 85% населения, причём у половины из них нет даже электричества. По континентам самые низкие в среднем показатели проникновения интернета в Африке - например, в Эфиопии интернета нет у 98% населения.