代码之家  ›  专栏  ›  技术社区  ›  Oscar Godson

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

  •  0
  • Oscar Godson  · 技术社区  · 13 年前

    我正在建立我的第一个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 回复  |  直到 13 年前
        1
  •  4
  •   SLaks    13 年前

    移除 () 在函数体的末尾。

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

    相当于

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

    因为函数不返回任何内容, 储物柜 最终成为 undefined ,不是函数。