Javascript function() 文字重载

标签 javascript constructor debugging overloading

我一直很好奇有没有可能重载函数字面量,就像你可以用 Function 做的那样:

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. 如果不是,那么 - 这是如何通过 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/

相关文章:

javascript - Ajax 在 Bootstrap 模式上调用多次 onclick 事件

java - 为什么这段代码不能编译?

class - 当我们同时使用主构造函数和辅助构造函数时,如何在 kotlin 中初始化类的成员?

windows - 给定崩溃偏移量、.PDB 和源代码,我如何找到源代码行?

javascript - 这些 JavaScript 按位运算符有什么作用?

javascript - 如何过滤可能是几个树级别深度的父子数组的多个属性

javascript - 可选的链接运算符在将我的应用程序构建到 Heroku 时给出 SyntaxError 但在我的机器上工作

c++ - 在 C++ 中使用来自类构造函数的参数初始化公共(public)属性

C - 在实际问题点之前提出的段错误

c++ - windbg !analyze -v 输出中的 "BUGCHECK_STR: APPLICATION_FAULT_NULL_CLASS_PTR_READ_AFTER_CALL"是什么意思