是否可以限定整个 JavaScript 文件的范围
Is it possible to scope an entire javascript file?
假设我有一个javascript文件:
function foo(){ alert("I am foo!"); }
现在我想导入该 javascript,但我希望从特定的命名空间或范围调用 foo。 例如,a.foo(),b.foo()等。
function foo(){ alert("I am foo also!"); }
a.foo(); // alerts "I am foo!"
b.foo(); // alerts "I am foo also!"
有没有简单的方法可以做到这一点?
编辑:就我个人而言,我认为SO用户不应该负责解释他们提出问题的理由,但这里是:我希望用户能够创建一个具有某些功能的javascript文件,如show()和hide(),然后我使用该文件,基本上做eric.show(),todd.show()等。但我不希望 Eric 和 Todd 的代码在同一个文件中,我不希望他们负责以对象格式编写它。 我试图为这两个人尽可能地简化它。 括号会混淆它们。
除非你想通过 ajax 调用文件,或者像以前一样使用第三方模块,否则你总是可以利用窗口对象并添加一个新对象(你的命名空间)如下:
您的网页:
<html>
<!-- the stuff you have in your html file -->
<script src="path/to/file1.js">
<script src="path/to/file2.js">
</html>
文件 1:
window.namespace = { //or var namespace = {... since window holds all variable scope in modern browsers
foo:function(){
alert('I am foo');
}
};
文件 2:
function foo(){
alert('I am foo too');
}
//not using $(document).ready() because op didn't mention using jquery
document.addEventListener('DOMContentLoaded', function (event) {
//you can directly call anything in window scope in most browsers so
namespace.foo(); //I am foo
//or
window.namespace.foo(); //I am foo
foo(); //I am foo too
});
请记住,您必须确保在访问它们之前都有机会加载两个文件,因此 DOMContentLoaded 事件
另请记住,在函数内声明的任何函数或变量都不在窗口范围内,除非显式添加到窗口对象
相关文章:
- 使用压缩的JavaScript文件(不是运行时压缩)
- 如何包含特定于每个视图angularjs的javascript文件
- 将数据从javascript文件导入VB.Net页面
- Chrome加载旧版本的Javascript文件
- 操作员”;新的“;根据我想在几个JavaScript文件中使用的类,在JavaScript中使用
- gulp-if-javascript文件,但不在gulp-useref的特定目录中
- 如何在visualstudio中调试web api时编辑javascript文件
- 关于引入外部javascript文件的问题&css通过https
- 有没有办法在tinymceiframe中加载一个外部javascript文件
- 什么'是在asp.net MVC中将本地化的resources.resx文件转换为javascript文件的有效
- 在一个javascript文件中为整个网站创建标签
- 如何在定义js文件后为外部javascript文件设置变量
- 显示IIS上javascript文件(SOAP请求)的XML响应
- ResolveUrl没有'我似乎不适合当链接到具有动态虚拟目录的外部javascript文件时
- 我应该将MVC视图特定的javascript文件放在哪个文件夹中
- Django'支持Javascript文件中的翻译
- MVC正在忽略我的Javascript文件
- 为什么不't我的ruby代码与javascript文件一起插入
- 在Javascript文件中获取PHP变量
- 如何在Windows中将Javascript文件编译成二进制文件