5

私はjavascriptのコアメソッドの1つを書き直しています:

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

動的に書き換えられる関数の内部からメソッドの名前(この場合は「removeChild」)を動的に取得したいと思います。使用arguments.callee.nameしていますが、匿名関数だと思って何も返さないようです。匿名関数が割り当てられている関数の名前を取得するにはどうすればよいですか?

4

1 に答える 1

5

これ無名関数です。この無名関数をElement.prototype.removeChildプロパティに割り当てるだけですが、そのプロパティが関数の名前になるわけではありません。同じ関数を多くの変数とプロパティに割り当てることができ、それが呼び出された名前を知る方法はありません。

ただし、次のようにアクセスできる適切な名前を関数に付けることができますarguments.callee.name

Element.prototype.removeChild = function removeChild() {
    ....
}
于 2012-06-15T21:50:23.800 に答える