Javascript函数()文字重载

时间:2009-01-27 09:47:23

标签: 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();

当然你可以猜测这是调试整个项目的好方法。然而,我在这里所做的任何努力都是徒劳。

专家的问题是:

  1. 也许有些东西我不知道,也许有可能超载这个该死的构造函数? (但可能不是)。
  2. 如果不是那么 - 如何做到这一点 - 如果可能的话 - 在任何浏览器中(不仅仅是使用javascript - 而是他们的扩展语言 - 每个浏览器都有这样的东西)。
  3. 如果不是那么 - 如何通过addOn像firebug一样完成???

1 个答案:

答案 0 :(得分:1)

您的术语已关闭:Function()是函数构造函数,而function() {...}函数文字

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

这似乎不再起作用了:

var overload = {
    Object : function() {}
};

overload.Object.prototype.foo = 'bar';

with(overload) {
    document.writeln(new Object().foo);
    document.writeln({}.foo);
}
相关问题