Javascript:返回包含其他函数的对象的函数?这个叫什么?

时间:2014-03-20 16:13:51

标签: javascript

我对Javascript有些新手(已经使用了几个月),但总的来说我可能认为自己是一个临界新手/中级程序员。我现在正在使用Javascript中的一个相当大的项目,包含许多不同的函数,我正在尝试找出一些用于组织代码的“最佳实践”。

我已经看到了一些似乎可能非常有用的方法的例子。例如,请参阅this Stackoverflow answerthis page on best practices(对return{执行Ctrl + F)。本质上,您在变量中定义一个函数,该函数只返回其他函数/变量:

var functionContainer = function() {
    return {
        function1 : function () {
            // Do something
        },

        function2 : function () {
            // Do something else
        }
    };
}();

在我有多个类似功能的情况下,这似乎很有用;我可以将它们全部放入各种“容器”中,然后用functionContainer.function1();调用它们。

基本上,我的问题是:这项技术有名称吗?你能推荐任何进一步阅读的资源吗?我见过的很多资料都没有深入了解你这么做的确切情况,我想确保我完全理解我开始在一堆代码中乱窜之前正在做的事情。

我可能会在稍后发布一些单独的后续问题,具体取决于我在这里得到的回复。如果是这样,我会在这里发布给他们的链接,以及其他任何好奇的人。

3 个答案:

答案 0 :(得分:0)

这只是分配和学习javascript函数如何是一流的类型。在返回时,您还有一个对象文字,其中一些函数被定义为成员。这有点像一个揭示模块模式,虽然对于正确的方法我推荐以下阅读: http://addyosmani.com/resources/essentialjsdesignpatterns/book/#revealingmodulepatternjavascript

答案 1 :(得分:0)

揭示模块模式 http://addyosmani.com/resources/essentialjsdesignpatterns/book/#revealingmodulepatternjavascript

Addy Osmani的分析复制自上面的链接:

  

优点

     

此模式允许脚本的语法更加一致。   它还使模块的最后更清楚我们的哪个   功能和变量可以公开访问,这样可以轻松实现   可读性。

     

缺点

     

这种模式的缺点是如果私有函数引用   公共功能,如果补丁,公共功能不能被覆盖   有必要的。这是因为私人功能将继续   参考私有实现,模式不适用   公共成员,仅限于职能部门。

     

引用私有变量的公共对象成员也是   受上述无补丁规则的影响。

     

因此,使用Revealing Module模式创建模块   可能比使用原始模块创建的更脆弱   模式,所以在使用过程中应该小心。

答案 2 :(得分:0)

这只是一个简单的对象文字。与其他一些答案相反,它不是揭示模块模式。在揭示模块模式中,您的函数将在闭包中定义,而不是在返回的对象文字中定义。

但是,我认为您的代码有误。我想你打算写

var functionContainer = (function() {
  return {
    function1 : function () {
        // Do something
    },

    function2 : function () {
        // Do something else
    }
  };
})();

使用此代码,您可以致电functionContainer.function1();。 (删除:您无法使用原始代码执行此操作。)如果此模式符合您的意思,则返回对象字面值为IIFE

相关问题