将JS分解为带有$(document).ready()的文件,但保留范围

break js to files with $(document).ready() but keep scope

本文关键字:ready 文件 范围 保留 document 分解 JS      更新时间:2023-09-26

我想把我的javascript代码分解成几个.js文件。这些.js中的每一个都有需要位于 $(document).ready(..) 中的代码。因此,在每个文件中,将启动一个新的 $(document).ready(..) 。

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

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

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

你可以用

window.globalname = localname;

请记住,函数是变量。

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

把它放在一个类似主.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 以添加函数、属性等。

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

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

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

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