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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top