0

我的项目中有三个 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() 。有没有办法做到这一点?

4

1 回答 1

0

据我所知,唯一明智的选择是全局对象。如果你想从任何地方访问某些东西,它需要是全局的。

如果您查看大多数实用程序库,例如http://underscorejs.org/,您会看到相同的内容。他们使用一个名为“_”的全局命名空间(类似于您的 MyApp 对象)。

如果您尝试将函数单独添加到每个对象,您将在内存中为每个对象复制它们,这是一种浪费。

于 2013-08-02T10:11:51.300 回答