Я пытаюсь загрузить некоторые внешние файлы .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+'
\n'); //prints "second"
document.write('first.name= '+first.name+'
\n'); //prints "undefined"
document.write('second.name= '+second.name+'
\n'); //prints "undefined
какие-нибудь идеи?
РЕШЕНИЕ
Это невозможно.
Я рекомендую эти поучительные материалы для чтения всем, у кого есть подобная проблема, и кто, возможно, захочет заняться ею:
http://jibbering.com/faq/notes/closures/
http://softwareas.com/cross-domain-communication-with-iframes