Question

Je construis ma première OO bibliothèque JS et im avoir un peu de mal avec un morceau qui est probablement super facile ...

J'ai ceci:

var storageLocker = function(catalog){
    if(catalog){
        this.catalog = catalog;
    }
    //my code...
}()

Je dois être capable de faire ce que les autres bibliothèques comme jQuery faire où vous pouvez sélectionner un élément (dans mon cas, sélectionnez un élément de localStorage), puis enchaîner d'autres fonctions à lui. J'ai eu tout ce travail, mais pour les bonnes pratiques et de le rendre plus tard plus extensible je l'ai mis dans une fonction anonyme et maintenant je ne peux pas comprendre comment avoir la syntaxe:

storageLocker('localStorageItem').save({"item":"an example item saved to localStorageItem"})

mais maintenant si je le fais maintenant avec cette syntaxe renvoie cette erreur:

Uncaught TypeError: Property 'storageLocker' of object [object DOMWindow] is not a function

Toutes les idées?

Était-ce utile?

La solution

Supprimer le () à la fin du corps de la fonction.

Vous avez écrit var storageLocker = function(...) { ... }(), ce qui crée une fonction anonyme, il appelle , et cessionnaires le résultat à storageLocker.

Il est équivalent à

function anonymous(...) { ... };
var storageLocker = anonymous();

Puisque la fonction ne retourne rien, se termine storageLocker par être undefined, et n'est pas une fonction.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top