javascript - 我可以在 'window' 以外的上下文中加载 javascript 文件吗?

标签 javascript namespaces resolution identifier

我尝试加载一些外部 .js 文件,并且有一些无法解决的命名空间冲突。

我想以某种方式在它们自己的上下文中加载一些文件,将“this”从指向窗口对象替换为某个自定义命名空间。

例子:

首先.js:

name = "first";

second.js:

name = "second";

在我看来,这种技巧非常有用。有可能吗?

编辑
似乎替换“this”并不能解决问题,因为它不是 javascript 中标识符解析的默认上下文。这是我的测试代码:

var first = {};
var second = {};

(function(){name = "first";}).call(first);
(function(){name = "second";}).call(second);


document.write('name= '+name+' <br/>\n'); //prints "second"
document.write('first.name= '+first.name+' <br/>\n'); //prints "undefined"
document.write('second.name= '+second.name+' <br/>\n'); //prints "undefined

有什么想法吗?

决议
这不可能。我最终比今天早上更聪明,我放弃了。 我向任何有类似问题并且可能想尝试一下的人推荐这些启发性的阅读 Material : http://jibbering.com/faq/notes/closures/
http://softwareas.com/cross-domain-communication-with-iframes

最佳答案

我的一个想法是在不需要修改外部 JavaScript 文件的情况下以 AJAXy 方式获取 JavaScript 文件的内容(取决于你如何做),然后将其全部放入函数中使用new Function(code) 方法,然后使用 new 初始化它:

surrogateWindow = new new Function(jsCode)();

那么surrogateWindow就是那个代码的this。我认为这个想法应该可行。

关于javascript - 我可以在 'window' 以外的上下文中加载 javascript 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4122192/

相关文章:

height - H264 从序列参数集 (SPS) NAL 单元获取帧高度和宽度

php - 检测 JavaScript 是否被禁用

javascript - Raphael.js - 向元素注册多个事件

php - 如何使用 uploadify 为每个上传的文件获取唯一名称

javascript - 如何从 NPM 包中获取 Angular 5 应用程序环境变量?

python - 有没有办法让用户定义的函数出现在完全不同的命名空间中?

具有默认命名空间设置为 xmlns 的 XML 源的 XSLT

c++ - cout不是std的成员,其他关于c++的问题

android - 如何在 Android 中使用 WebView 呈现全分辨率图像?

ios - 检索 iOS 摄像机分辨率