我的项目中有三个js文件,每个文件中重复有大约15个函数。 它们是一种实用功能。 为了避免这种重复,我使用了$ .extend:
$.extend({
myFunction1 : function(){},
myFunction2 : funciton(){},...and so on
});
这种方法非常有效,我可以在js文件中的任何地方调用$ .myFunction1()。
但是,我想创建一个包含所有这些实用程序功能的对象。所以我的另一种方法就像
MyApp = {
myFunction1 : function(){},
myFunction2 : funciton(){}, ... and so on
}
我可以在3个文件中的任何位置调用MyApp.myFunction1(),因为 MyApp 是一个全局变量。
但我不想让它成为一个全局变量。我想要的只是我可以在我的代码中的任何地方调用 $。MyApp.myFunction1()。有办法吗?
答案 0 :(得分:0)
据我所知,唯一明智的选择是全局对象。如果您想从任何地方访问某些内容,那么它需要是全球性的。
如果你看一下大多数实用程序库,例如http://underscorejs.org/,你会看到同样的事情。它们使用全局命名空间(类似于您的MyApp对象),它名为' _'。
如果您尝试将功能单独添加到每个对象,则会在内存中为每个对象复制它们,这是浪费。