Imposta var a una funzione anonima con un parametro?
-
29-09-2019 - |
Domanda
sto costruendo la mia prima biblioteca OO JS e Im che ha un po 'di problemi con un pezzo che è probabilmente super facile ...
ho questo:
var storageLocker = function(catalog){
if(catalog){
this.catalog = catalog;
}
//my code...
}()
Ho bisogno di essere in grado di fare quello che altre librerie come jQuery fare dove è possibile selezionare un elemento (nel mio caso selezionare una voce localStorage) e poi concatenare altre funzioni ad essa. Ho avuto tutto questo lavoro, ma per le migliori pratiche e per renderlo più estensibile in seguito ho messo in una funzione anonima e ora non riesco a capire come avere la sintassi:
storageLocker('localStorageItem').save({"item":"an example item saved to localStorageItem"})
, ma in questo momento se lo faccio ora con la sintassi che restituisce questo errore:
Uncaught TypeError: Property 'storageLocker' of object [object DOMWindow] is not a function
Tutte le idee?
Soluzione
Rimuovere la ()
alla fine del corpo della funzione.
ha scritto var storageLocker = function(...) { ... }()
, che crea una funzione anonima, chiama , e cessionari il risultato per storageLocker
.
E 'equivalente a
function anonymous(...) { ... };
var storageLocker = anonymous();
Dato che la funzione non restituisce nulla, finisce con l'essere storageLocker
undefined
, e non è una funzione.