2010-10-08 8 views

risposta

13

Beh, la funzione load potrebbe assomigliare a questo:

function load(arg, callback) { 

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

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

Con il typeof verifica che l'argomento del callback sia un oggetto che possiamo invocare, una funzione zione.

Poi il tuo esempio:

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

Wow .. che semplice eh. –

1

Le funzioni sono proprio come tipi normali e possono essere passati come argomenti:

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

Nelle funzioni JavasScript sono oggetti di prima classe. Ciò significa praticamente che si comportano come altri tipi integrati. È possibile assegnare alle variabili, passarle in funzioni, ecc

Questo articolo è un link utile spiegare come funzioni come oggetti di prima classe lavorare in JavaScript: http://helephant.com/2008/08/functions-are-first-class-objects-in-javascript/

Joel Spolsky ha una spiegazione dettagliata e interessante su alcune delle cose interessanti/modi in cui è possibile utilizzare funzioni come oggetti di prima classe in JavaScript: http://www.joelonsoftware.com/items/2006/08/01.html

Infine, dato che sono oggetti di prima classe, le funzioni possono accettare facilmente altre funzioni come parametri:

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

Punti da tenere presenti:

  • this può essere null. In tal caso, se nell'implementazione del callback viene utilizzato this, questo rimanda all'oggetto Global.
  • argumentArray è in realtà un JavaScript Array di argomenti richiesti dal metodo di callback.
Problemi correlati