Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 19.06.2010, 15:14
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Всем спасибо, тему можно закрывать. Демо-код получился такой:
(function(){
  if(this == window){
    document.userScope = arguments.callee;
  } else {
    with(this.stack){ // Область видимости для вражеского фронта
      eval('(function(){' + this.code + '}).call(this.module);');
    }
    this.stack[this.name] = this.module;
  }

})();

(function(){ // Мой фронт
  var userScope = document.userScope;
  delete document.userScope;

  var stack = {};

  var module1 = {};
  var module2 = {};

  userScope.call({ // Добавляем первую переменную
    name: 'module1',
    code: 'this.fn = function(){console.log(module2)};', // Вражеский фронт
    module: module1,
    stack: stack
  });

  userScope.call({
    name: 'module2',
    code: 'console.log(this)',
    module: module2,
    stack: stack
  });

  module1.fn(); // После добавления новых переменных, старые их тоже видят.

})();

Ничего лишнего не попало во вражескую область видимости.

Последний раз редактировалось B~Vladi, 19.06.2010 в 15:26.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос: И опять про offsetLeft... sigurd Общие вопросы Javascript 11 04.10.2010 14:06
Вопрос про ООП, цепочки прототипов. Shaci Общие вопросы Javascript 5 27.01.2010 14:50
вопрос про <select> Krondor Общие вопросы Javascript 2 25.11.2009 17:04
Вопрос про отправку данных методом Post QQQ AJAX и COMET 1 15.07.2009 23:27
вопрос про сверхдинамичный интерфейс Гость AJAX и COMET 2 05.04.2008 01:02