Установите My Var в анонимную функцию с параметром?

StackOverflow https://stackoverflow.com/questions/4300135

  •  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, и не является функцией.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top