Javascript 是否将我的var设置为带参数的匿名函数?

Javascript 是否将我的var设置为带参数的匿名函数?,javascript,oop,local-storage,Javascript,Oop,Local Storage,我正在构建我的第一个OO JS库,我在其中一个方面遇到了一些问题,这可能非常简单 我有这个: var storageLocker = function(catalog){ if(catalog){ this.catalog = catalog; } //my code... }() 我需要能够像jQuery这样的其他库那样,选择一个元素(在我的例子中选择一个localStorage项),然后将其他函数链接到它。我已经完成了所有这些工作,但为了获得最佳实践

我正在构建我的第一个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
最终是未定义的,并且不是函数。

删除函数体末尾的
()

您编写了
var-storageLocker=function(…){…}()
,它创建了一个匿名函数,调用它,并将结果分配给
storageLocker

相当于

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

由于函数不返回任何内容,
storageLocker
最终是未定义的,并且不是一个函数。

一直在尝试,但我不得不等待10分钟:)一直在尝试,但我不得不等待10分钟:)我读了你关于这方面的其他问题,如果你想使用私有变量,你需要使用闭包。也就是说,您应该在结尾处使用这个结构,并且使用
()
,但是您需要从内部返回第二个函数,该函数处理您的实际逻辑。在另一个问题上有一个很好的例子,我读了你关于这个的另一个问题,如果你想使用私有变量,你需要使用闭包。也就是说,您应该在结尾处使用这个结构,并且使用
()
,但是您需要从内部返回第二个函数,该函数处理您的实际逻辑。在另一个问题上有一个很好的例子。