使用参数将我的var设置为匿名函数?

时间:2010-11-29 01:06:54

标签: javascript oop local-storage

我正在构建我的第一个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 个答案:

答案 0 :(得分:4)

删除函数体末尾的()

你写了var storageLocker = function(...) { ... }(),它创建了一个匿名函数,将其称为,并将结果分配给storageLocker

相当于

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

由于该函数不返回任何内容,storageLocker最终为undefined,并且不是函数。