我对Javascript有些新手(已经使用了几个月),但总的来说我可能认为自己是一个临界新手/中级程序员。我现在正在使用Javascript中的一个相当大的项目,包含许多不同的函数,我正在尝试找出一些用于组织代码的“最佳实践”。
我已经看到了一些似乎可能非常有用的方法的例子。例如,请参阅this Stackoverflow answer或this page on best practices(对return{
执行Ctrl + F)。本质上,您在变量中定义一个函数,该函数只返回其他函数/变量:
var functionContainer = function() {
return {
function1 : function () {
// Do something
},
function2 : function () {
// Do something else
}
};
}();
在我有多个类似功能的情况下,这似乎很有用;我可以将它们全部放入各种“容器”中,然后用functionContainer.function1();
调用它们。
基本上,我的问题是:这项技术有名称吗?你能推荐任何进一步阅读的资源吗?我见过的很多资料都没有深入了解你这么做的确切情况,我想确保我完全理解我开始在一堆代码中乱窜之前正在做的事情。
我可能会在稍后发布一些单独的后续问题,具体取决于我在这里得到的回复。如果是这样,我会在这里发布给他们的链接,以及其他任何好奇的人。
答案 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。