我一直很好奇是否有可能重载函数文字,就像你可以用函数做的那样:
var test=Function;
Function=function(arg)
{
alert('test');
return test(arg);
}
var b=Function("alert('a')");
var c=Function("alert('x')");
b();
c();
当然你可以猜测这是调试整个项目的好方法。然而,我在这里所做的任何努力都是徒劳。
专家的问题是:
答案 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);
}