使用jquery extend创建包含函数的对象

时间:2013-08-02 10:02:13

标签: jquery global extend utility

我的项目中有三个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()。有办法吗?

1 个答案:

答案 0 :(得分:0)

据我所知,唯一明智的选择是全局对象。如果您想从任何地方访问某些内容,那么它需要是全球性的。

如果你看一下大多数实用程序库,例如http://underscorejs.org/,你会看到同样的事情。它们使用全局命名空间(类似于您的MyApp对象),它名为' _'。

如果您尝试将功能单独添加到每个对象,则会在内存中为每个对象复制它们,这是浪费。