Встроенные функции и область действия другого метода - PullRequest
1 голос
/ 27 апреля 2009

Как сделать myFunction видимой для встроенной функции в событии .ready ()?

$(document).ready(function() {
  ...stuffs...
  myFunction(par1, par2, anotherFucntion_callback);
 }
);

function anotherFunction_callback(data) {
 ..stuffs..
}

Ответы [ 2 ]

1 голос
/ 27 апреля 2009

Я не совсем понял ваш вопрос. Вы имеете в виду, что хотите передать «myFunction_callback (data)» в качестве последнего аргумента в вашем:

myFunction(par1, par2, anotherFunction_callback);

, включая этот параметр "data"?

В этом случае решение довольно стандартное, напишите это перед этим:

var temp = function() { anotherFunction_callback(data) };

альтернативный синтаксис:

function temp() { myFunction_callback(data) };
// even though this looks just like a free function,
// you still define it inside the ready(function())
// that's why I call it "alternative". They are equivalent.

Как правило, если вы хотите передать функцию с 1 или более аргументами другой функции, вы используете этот формат. Здесь мы в основном создаем новую функцию без аргументов, которая вызывает другую. Новая функция имеет доступ к переменной data. Это называется «закрытие», вы можете прочитать больше об этом. Конечно, если обратный вызов не требует аргумента, вы можете просто использовать оригинальное имя функции.

Надеюсь, это поможет.

ps: вы можете даже встроить объявление функции, сделав ее анонимной, например: myFunction (par1, par2, function () {myFunction_callback (data)}); Обратите внимание, что

$(document).ready(function() {});

выглядит примерно так же.

1 голос
/ 27 апреля 2009

Вы используете фактическое имя функции, т.е. myFunction_callback вместо myFunction или anotherFucntion_callback.

...