0

我有一些大型 js 文件,它们的函数和对象位于全局范围内,并且它们之间有函数调用。有没有一种相对简单的方法可以将它们置于本地范围内。

<script src="fileA.js"></script>
<script src="fileB.js"></script>
<script src="fileC.js"></script>

我试过把(function(){A 文件的开头和 })();最后一个文件的结尾放在一起,但它不起作用。

10x 为您提供帮助 BR

4

3 回答 3

2

不,没有。

您最接近的方法是将它们设置为通过命名空间(一个单一的全局变量,其名称被选择以使冲突不太可能发生)共享变量,例如window.YOUR_SCRIPT_NAME = {}.

于 2012-10-11T10:48:07.970 回答
2

你不能这样包装它,因为每个脚本仍然是单独解析的(<script>标签不能通过将内容包含到文件中来工作)。

您可以简单地手动连接文件,放置function(){ ... }()整个内容,并将这个新连接的脚本作为一个单元使用。

如果脚本内容的重写是可行的,您可以让它们使用工厂方法中为它们提供的共享范围,就像 Quentin 在另一个答案中提到的那样。但是,更好的解决方案(如果您可以重写并且这是一个更大的项目)将切换到具有依赖关系的完整模块概念,例如AMD

于 2012-10-11T10:52:14.527 回答
1

您可以使用 Ajax 将 fileA.js 的内容作为字符串获取,而不是使用脚本 src="fileA.js"。比评估您的本地范围。

eval.call(yourlocalscope, string)
于 2012-10-11T11:01:35.010 回答