Я пытаюсь загрузить некоторые внешние файлы .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