いくつかの外部 .js ファイルを読み込もうとしましたが、解決できない名前空間の競合がいくつかあります。
this
ウィンドウ オブジェクトを指していた " " をカスタム名前空間に置き換えて、何らかの方法でファイルの一部を独自のコンテキストにロードするというアイデアがありました。
例:
first.js:
name = "first";
second.js:
name = "second";
この種のトリックは非常に便利なように思えます。それはまったく可能ですか?
EDIT
は、" " を置き換えて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- with-iframes