Установить мою переменную для анонимной функции с параметром? - PullRequest
0 голосов
/ 29 ноября 2010

Я создаю свою первую библиотеку OO JS, и у меня возникли небольшие проблемы с одним фрагментом, который, вероятно, очень прост ...

У меня есть это:

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

мне нужно иметь возможность делать то, что делают другие библиотеки, такие как jQuery, где вы можете выбрать элемент (в моем случае выберите элемент localStorage) и затем связать с ним другие функции. У меня все это работало, но для лучшего опыта и для того, чтобы потом сделать его более расширяемым, я поместил его в анонимную функцию, и теперь я не могу понять, как получить синтаксис:

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

но сейчас, если я сделаю это сейчас с этим синтаксисом, он выдаст эту ошибку:

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

Есть идеи?

1 Ответ

4 голосов
/ 29 ноября 2010

Удалите () в конце тела функции.

Вы написали var storageLocker = function(...) { ... }(), который создает анонимную функцию, вызывает ее и присваивает результат до storageLocker.

Это эквивалентно

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

Поскольку функция ничего не возвращает, storageLocker в конечном итоге становится undefined и не является функцией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...