Я пытаюсь загрузить некоторые внешние файлы .js, и у меня возникают некоторые неразрешимые конфликты пространств имен.
У меня возникла идея каким-то образом загрузить некоторые файлы в их собственный контекст, заменив " this
" указанием на объект окна на какое-то пользовательское пространство имен.
пример:
first.js:
name = "first";
second.js:
name = "second";
Мне кажется, что такой трюк может быть очень полезным. Возможно ли это вообще?
РЕДАКТИРОВАТЬ
кажется, что замена « это
» не начинает решать проблему, поскольку это не контекст по умолчанию для разрешения идентификатора в 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
любые идеи?
РЕШЕНИЕ
Это невозможно. Я оказался мудрее, чем был сегодня утром, и бросил это дело.
Я рекомендую эти поучительные материалы для чтения всем, у кого есть подобная проблема, и кто, возможно, захочет заняться ею:
разобраться в PHP?