如何在不同的JS文件之间共享相同的作用域变量
How to share same scope variables between different JS files
我有三个脚本文件。Main.js, script1.js, script2.js.
main.js只是将脚本包含到文档中:
function IncludeJs(sFileName) {
document.writeln('<script type="text/javascript" src="' + sFileName + '"></script>');
}
IncludeJs("../script1.js");
IncludeJs("../script2.js");
script1.js和script2.js代码在同一个命名空间下。
script1.js:
var sharedNamespace = sharedNamespace || {};
(function () {
"use strict";
function func1(){
....
}
}).apply(sharedNamespace );
script2.js:
var sharedNamespace = sharedNamespace || {};
(function () {
"use strict";
function func2(){
return func1();
}
}).apply(sharedNamespace );
func2不能工作,因为func1未定义。我怎么能把script1.js和script2.js在同一范围内与共享变量?
sharedNamespace.func1 = function(){}
的解决方案对我来说是最糟糕的,因为我不想把这个函数暴露给使用我的库的客户端…
…我不想把这个函数暴露给使用我的库的客户端…
如果你有单独的脚本文件,你想让它们定义相互调用的函数,你别无选择。这是不可能有script1.js
和script2.js
共享一个共同的作用域,也不能访问页面上的其他脚本。
相反,您可能希望将用于开发的单独文件组合起来用于部署,因为单个脚本(当然)可以拥有私有信息。(当然,除非用户编辑脚本,否则是私有的。)
例如,你可以这样写:
script1.js
:
var internal = internal || {};
(function(i) {
i.func1 = function func1() {
// ...code here, possibly using i.func2()
};
})(internal);
script2.js
:
var internal = internal || {};
(function(i) {
i.func2 = function func2() {
// ...code here, possibly using i.func1()
};
})(internal);
在进行开发时,您可以单独包含它们,因此任何代码都可以使用internal.func1
。但是,当您在一个脚本中构建所有内容时,您会将其包装为
(function() {
// ...contents of script1.js here...
// ...contents of script2.js here...
})();
现在,internal
对合并的脚本是私有的。
这是我的头;
相关文章:
- 在索引.html和应用.js [node.js] 之间共享变量
- 在Knockoutjs中的ViewModels之间共享变量状态
- 共享变量和多个控制器AngularJS
- 在两个浏览器选项卡之间共享变量范围
- Javascript创建函数,以便在其他函数之间共享变量
- 为什么原型允许多个实例共享变量
- 关于node.js/javascript在文件之间共享变量
- 在 AngularJS 和非 AngularJS 弹出窗口之间共享变量
- nodejs-settimeout是否在不同的循环中共享变量
- 在Ember.js中的方法之间共享变量上下文
- 使用NodeJS与客户端共享变量
- 在页面之间共享变量
- 共享工作者确实共享变量
- 在Javascript中的函数之间共享变量
- 在 JavaScript 命名空间中共享变量
- 价格计算器 Javascript 帮助 - 共享变量的值
- 在单独文件夹/位置中的.js文件之间共享变量
- Javascript 类属性表现为共享变量
- 如何在嵌套指令之间共享变量
- nodeJ的回调共享变量