Javascript元编程:获取当前正在执行的函数的名称,该函数被动态重写

use*_*569 5 javascript metaprogramming function dynamic

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

Element.prototype._removeChild = Element.prototype.removeChild;
Element.prototype.removeChild = function(){
    callback();
    this._removeChild.apply(this,arguments);
}
Run Code Online (Sandbox Code Playgroud)

我想从动态重写的函数内部动态获取方法的名称(在本例中为"removeChild").我使用arguments.callee.name但它似乎没有返回任何东西,认为它只是一个匿名函数.如何获取分配匿名函数的函数的名称?

lan*_*nzz 5

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

但是,您可以为函数指定一个正确的名称,您可以访问该名称arguments.callee.name:

Element.prototype.removeChild = function removeChild() {
    ....
}
Run Code Online (Sandbox Code Playgroud)