1

我想将我的 javascript 代码分解为几个 .js 文件。这些 .js 中的每一个都有需要在 $(document).ready(..) 中的代码。所以在每个文件中都会启动一个新的 $(document).ready(..) 。

我如何从 fileb.js 中声明的 filea.js 函数调用(都在 $(document).ready 块内)?

如果这是不可能的,你能提出一个替代方案吗?谢谢你。

编辑:我想澄清一下,我想避免使用全局范围。我希望使用命名函数作为事件的处理程序,但我真的不知道该怎么做。

4

3 回答 3

4

您可以使用

window.globalname = localname;

请记住,函数是变量。

于 2012-04-21T18:56:46.033 回答
2

你真的无法摆脱声明一个全球性的。创建一个全局并不是那么糟糕,然后您可以命名它下的所有函数。

把它放在一个类似于 main.js 的文件中,这样你就可以把你的共享函数保存在这里:

// name this something unique to your page/site/app
var MYAPP = {};

// now we can attach functions to it

MYAPP.funcA = function() { /* ... */ };
MYAPP.funcB = function() { /* ... */ };

然后,在您的每个匿名函数中,您可以访问 MYAPP.funcA()、MYAPP.funcB() 等。您还可以动态修改 MYAPP 以添加函数、属性等。

最后你有一个全局的(该死的!),但如果你正确命名它,你正在创建一个全局命名空间,你的应用程序代码可以安全地驻留在其中。

于 2012-04-21T19:41:32.953 回答
1

只要文件按顺序加载(即在调用它们filea.js之前加载函数fileb.js,你应该没问题。

为了确保文件首先加载它们的依赖项,您可以考虑 require.js 或 head.js

我对后者很幸运:http: //headjs.com/

于 2012-04-21T18:52:51.767 回答