// рабочий результат
var invoke = function(fn){
  var str = 'var test = \'sss\';';
  alert(fn)
  var fnxt = new Function(str+fn);
  fnxt();
}
var tester = 'alert(test);'
invoke(tester);
// желательный результат
var invoke_real = function(fn){
  var test = 'sss';
  alert(fn)
  // дальше, само собой -- не работает, т.к. test отсутствует для scope tester_real'a
  fn();
}
var tester_real = function(){ alert(test); }
invoke_real(tester_real);
* This source code was highlighted with Source Code Highlighter.  
    var invoke_real = 
    {
        real: function(fn)
        {
           this.test = 'sss';
           fn(this);
           this.f();
        }
    };
    var tester_real = function(ctx){ctx.f = function() {alert(this.test);};};
    invoke_real.real(tester_real);
var invoker = {
   init  : function(fn){
    invoker.arr[fn] = window[fn];
    window[fn] = function(){
      var test = 'sss';
      alert('+1 '+test)
      invoker.arr[fn]();
    };
  }
  , del  : function(fn){
    window[fn] = invoker.arr[fn];
    delete invoker.arr[fn];
  }
  , arr  : []
}
var tester = function(){ alert(222); try{ alert(test); }catch(e){ alert(e); /* ref err */ } }
invoker.init('tester');
alert(111);
tester();
alert(333);
invoker.del('tester');
tester();
* This source code was highlighted with Source Code Highlighter.