Вызов функции JavaScript (в оригинальной функции) из вызываемой функции? - PullRequest
0 голосов
/ 13 мая 2009

Есть ли в любом случае вызов функции из другой функции ... немного сложно объяснить. вот в пример. Одна функция загружает HTML-страницу и, когда она готова, вызывает исходную функцию.

Я думаю, что мне нужно передать ссылку, но я не уверен, как это сделать ... если я установил его на "это" - похоже, он не работает

ЛЮБЫЕ идеи?

order.prototype.printMe = function(){
    order_resume.loadthis("myTestPage.html", "showData");
}

order.prototype.testme= function(){
     alert("i have been called");
}

//Then when in "loadthis" need to call 

orderRsume.prototype.loadthis= function(){
    //  DO SOME STUFF AND WHEN LOADS IT ARRIVES IN OnReady
}

order.prototype.OnReady= function(){
  /// NEED TO CALL ORIGINAL "testme" in other function
}

Ответы [ 2 ]

3 голосов
/ 13 мая 2009

Мне не ясно, что ты действительно хочешь делать. В JS-функции входят объекты первого класса . Таким образом, вы можете передать функцию в качестве параметра другой функции:

Cook("lobster", 
     "water", 
     function(x) { alert("pot " + x); });

order.somefunc = function(){
    // do stuff
}

order.anotherone = function(func){
    // do stuff and call function func
    func();
}

order.anotherone(order.somefunc);

И если вам нужно обратиться к безымянной функции из ее тела, следующий синтаксис должен работать:

order.recursivefunc = function f(){
    // you can use f only in this scope, afaik
    f();
}; 
0 голосов
/ 13 мая 2009

Я немного изменил сигнатуру вашей функции загрузки, чтобы она передавала приказ на фактическую загрузку.

Я также предположил, что ваша функция doSomeStuff принимает функцию обратного вызова. Я предположил, что это может быть вызов AJAX, поэтому было бы тривиально вызвать функцию обратного вызова в конце вызова AJAX. Прокомментируйте этот ответ, если вам нужна дополнительная информация о том, как вызвать эту функцию обратного вызова из вашего вызова AJAX.

order.prototype.printMe = function(){
    order_resume.load(this, "myTestPage.html", "showData");
}

order.prototype.testme= function(){
     alert("i have been called");
}

//Then when in "loadthis" need to call 

orderRsume.prototype.load = function(order, page, action){
    //  DO SOME STUFF AND WHEN LOADS IT ARRIVES IN OnReady
    doSomeStuff(page, action, function()
    {
        order.OnReady();
    });
}

order.prototype.OnReady= function(){
  /// NEED TO CALL ORIGINAL "testme" in other function
  this.testme();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...