我一直很好奇有没有可能重载函数字面量,就像你可以用 Function 做的那样:
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()
是函数 constructor,而 function() {...}
是一个函数字面量。
不,我不认为有一种可移植的方法来做到这一点,但对于旧版本的 Firefox 可能有:如果我没记错的话,曾经可以使用 with() {... }
隐藏内置构造函数,Firefox 甚至会使用新的构造函数。
这似乎不再有效:
var overload = {
Object : function() {}
};
overload.Object.prototype.foo = 'bar';
with(overload) {
document.writeln(new Object().foo);
document.writeln({}.foo);
}
关于Javascript function() 文字重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/482808/