Javascript函数()文本重载

Javascript函数()文本重载,javascript,constructor,debugging,overloading,Javascript,Constructor,Debugging,Overloading,我一直很好奇是否有可能重载函数文字,比如你可以用函数: var test=Function; Function=function(arg) { alert('test'); return test(arg); } var b=Function("alert('a')"); var c=Function("alert('x')"); b(); c(); 当然,您可以猜到这是调试整个项目的好方法。然而,我在这里所做的任何努力都是徒劳的 各位专家的问题是: 也许有什么我不知

我一直很好奇是否有可能重载函数文字,比如你可以用函数:

var test=Function;
Function=function(arg)
{
      alert('test');
      return test(arg);
}

var b=Function("alert('a')");
var c=Function("alert('x')");
b();
c();
当然,您可以猜到这是调试整个项目的好方法。然而,我在这里所做的任何努力都是徒劳的

各位专家的问题是:

  • 也许有什么我不知道的,也许有可能让这个该死的构造器过载?(但可能不会)
  • 如果不是,那么-如何做到这一点-如果可能的话-在任何浏览器中(不仅仅是通过使用javascript-而是通过他们的扩展语言-每个浏览器都有这样的功能)
  • 如果没有,那么-如何通过firebug等插件实现

  • 您的术语已关闭:
    Function()
    是函数构造函数,而
    Function(){…}
    是函数文本

    不,我不认为有一种可移植的方法可以做到这一点,但对于旧版本的Firefox可能有:如果我没记错的话,曾经可以使用
    with(){…}
    来隐藏内置构造函数,Firefox甚至可以使用新的构造函数来隐藏文本

    这似乎不再有效:

    var overload = {
        Object : function() {}
    };
    
    overload.Object.prototype.foo = 'bar';
    
    with(overload) {
        document.writeln(new Object().foo);
        document.writeln({}.foo);
    }