JavaScript отправляет аргументы объекта в качестве аргумента - PullRequest
9 голосов
/ 28 марта 2011

Мне нужно передать аргументы в функцию обратного вызова в качестве реальных аргументов. Как я могу это сделать? обратный вызов требует переменного числа аргументов.

Пример функции, подобной этой:

var func = function (callback) {
  doSomething(function () {
    // the goal is to pass on the arguments object to the callback function as real arguments
    callback(arguments)
  });
}

Заранее спасибо.

Возможно, вопрос похож на этот: Можно ли отправить переменное число аргументов в функцию JavaScript?

Но я не понял ни этого вопроса, ни ответов.

Редактировать: Если возможно, я бы не хотел загрязнять глобальное пространство.

1 Ответ

18 голосов
/ 28 марта 2011

Используйте , примените , чтобы вызвать обратный вызов, чтобы элементы массива передавались в качестве отдельных аргументов функции.

callback.apply(this, arguments);

apply принимает контекст, а массив - в качестве аргумента.и каждый элемент массива может быть передан как именованный аргумент вызываемой функции.

function two(first, second) {
    alert(first), alert(second);
}

two.apply(null, ["Hello", "World"]); // alerts "Hello", then "World"

Реализации ES3 требовали, чтобы второй аргумент apply был либо массивом, либо объектом аргументов,ES5 делает его более либеральным в том смысле, что он напоминает массив - имеет свойство length и соответствующие целочисленные индексы, он будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...