2010-10-08 12 views

Odpowiedz

13

Dobrze, funkcja load mógłby wyglądać następująco:

function load(arg, callback) { 

    var element = { name: "foo " + arg }; // something to pass 

    if (typeof callback == 'function') { 
    callback(element); 
    } 
} 

Z typeof sprawdźmy, czy argument callback jest obiektem, który możemy wywołać, func tację.

Wtedy twój przykład:

load("5", function(element) { 
    alert(element.name); // Will show `"foo 5"`. 
}); 
+0

Wow .. to proste, huh. –

1

Funkcje są tak jak normalnych typów i mogą być przekazywane jako argumenty:

function load(param1, callback) { 
    // call the callback parameter one second later 
    setTimeout(function() { 
     callback(param1); 
    }, 1000); 
} 
2
function load(foo, callback) { 
    blah(foo); 
    callback(); 
} 
2
function load(number, callback){ 

    // do something 

    if (callback) { 
     callback(); 
    } 

} 
4

W funkcji skryptów JavasScript to obiekty najwyższej klasy. To oznacza, że ​​działają tak jak inne typy wbudowane. Można je przypisać do zmiennych, przekazać je do funkcji itd

Ten artykuł jest pomocny Link wyjaśniając, w jaki funkcjonuje jako obiektów pierwszej klasy pracować w JavaScript: http://helephant.com/2008/08/functions-are-first-class-objects-in-javascript/

Joel Spolsky posiada szczegółowy i interesujący wyjaśnienie na niektóre z ciekawych rzeczy/sposobów można używać funkcji jako obiektów pierwszej klasy w JavaScript: http://www.joelonsoftware.com/items/2006/08/01.html

Wreszcie, ponieważ są one obiekty pierwszej klasy, funkcje mogą bardzo łatwo przyjąć inne funkcje jako parametry:

var load = function(callback) { 
    // load something here 
    callback(); 
} 
0
function(callback,argumentArray) { 
    var result = callback.apply(this,argumentArray); 
} 

punkty należy zauważyć:

  • this może być null. W takim przypadku, jeśli zostanie użyta implementacja wywołania zwrotnego, wskaże on obiekt Global.
  • argumentArray to tak naprawdę JavaScript Array z argumentów wymaganych przez metodę wywołania zwrotnego.
Powiązane problemy