Могу ли я загрузить файл javascript в контексте, отличном от «окна»?

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

35
задан Konerak 11 November 2010 в 11:00
поделиться