我可以在"窗口"以外的上下文中加载javascript文件吗?

Ami*_*rad 6 javascript namespaces resolution identifier

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

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

例:

first.js:

name = "first";
Run Code Online (Sandbox Code Playgroud)

second.js:

name = "second";
Run Code Online (Sandbox Code Playgroud)

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

编辑
似乎替换" 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
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

决议
这是不可能的.我最终比今天早上更聪明,我放弃了.我推荐这些有启发性的阅读材料给任何有类似问题的人,可能想要解决这个问题:http: //jibbering.com/faq/notes/closures/
http://softwareas.com/cross-domain-communication-与-I帧

dan*_*ars 2

尽管这是一个老问题,但这个答案可能仍然对某些人有用:

当加载 js 文件时,它会自动获取窗口的上下文。这是不可能改变的。但是,如果您试图避免正在加载的库之间发生冲突,并且您无法控制这些库,并且它们没有内置的“无冲突”机制,那么有一个不错的技巧- 您可以将它们加载到无源 iframe 中。这将使它们的上下文成为 iframe 的窗口,并且您仍然可以访问 iframe,因为这里不存在跨域问题。

您可以将此作为使用此技术的示例。