使用$(document).ready()将js打破到文件但保留范围

时间:2012-04-21 18:48:40

标签: javascript jquery scope

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

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

如果无法做到这一点,您能提出替代方案吗? 谢谢。

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

3 个答案:

答案 0 :(得分:4)

您可以使用

创建一个全局变量
window.globalname = localname;

请记住,函数是变量。

答案 1 :(得分: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以添加函数,属性等。

最后你有一个全局(darn it!),但是如果你已正确命名它,那么你正在创建一个全局命名空间,你的应用程序代码可以安全地存在。

答案 2 :(得分:1)

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

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

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