我正在重写javascript的核心方法之一:

Element.prototype._removeChild = Element.prototype.removeChild;
Element.prototype.removeChild = function(){
    callback();
    this._removeChild.apply(this,arguments);
}

我想从正在动态重写的函数内部动态获取方法的名称(在本例中为“removeChild”)。我使用arguments.callee.name,但似乎什么也不返回,以为它只是一个匿名函数。如何获得将匿名函数分配给的函数的名称?

最佳答案

这是一个匿名函数。您只是将此匿名函数分配给Element.prototype.removeChild属性,但这并未使该属性成为函数的名称。您可以将相同的函数分配给许多变量和属性,并且无法知道调用该函数的名称。

但是,您可以为函数指定一个适当的名称,您可以使用arguments.callee.name进行访问:

Element.prototype.removeChild = function removeChild() {
    ....
}

关于Javascript元编程: get name of currently executing function which was dynamically rewritten,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11058610/

10-09 22:30