我尝试加载一些外部 .js 文件,并且有一些无法解决的命名空间冲突。
我想以某种方式在它们自己的上下文中加载一些文件,将“ this
”从指向窗口对象替换为一些自定义命名空间。
例子:
第一个.js:
name = "first";
第二个.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
有任何想法吗?
解决方案
这是不可能的。我最终比今天早上更聪明,我放弃了。我向任何有类似问题的人推荐这些有启发性的阅读材料,可能想要破解它:http:
//jibbering.com/faq/notes/closures/
http://softwareas.com/cross-domain-communication-带 iframe