Установите My Var в анонимную функцию с параметром?
-
29-09-2019 - |
Вопрос
Я строю свою первую библиотеку 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
Любые идеи?
Решение
Удалить ()
В конце функционального тела.
Вы написали var storageLocker = function(...) { ... }()
, который создает анонимную функцию, называет это, и назначить результат к storageLocker
.
Это эквивалентно
function anonymous(...) { ... };
var storageLocker = anonymous();
Так как функция ничего не возвращает, storageLocker
заканчивается быть undefined
, и не является функцией.