2011-07-18 19 views
2

は私がInternet Explorerはarguments.callee.nameをサポートしていますか?

arguments.callee.caller.name 

を使用して、現在実行中の関数の名前を取得することができます知っている。しかしこれは、Internet Explorerの (すべてのバージョン)では動作しません。正しいブラウザ間の構文は何ですか?回避策はありますか?

+2

をサポートしています。廃止予定です。これは悪いコードに依存しています。それをリファクタリングしてください。 – Raynos

+0

知っておいてよかったです - ありがとう、レイノス! – mate64

+1

私がそれを後悔しても、レイノスは正しいです。 'arguments.callee'と' .caller'はどちらも非推奨です。 ECMA仲裁廷は、これらの参考文献が有益であると判断した。 'strict mode'をサポートしているブラウザは、それらのプロパティを使うときに例外をスローします。 – jAndy

答えて

2

arguments.calleeが効果的に段階的に除外され、ECMAScript 5 strictモードでは完全に存在しないことを除けば、主な問題は、IEのオブジェクトにnameプロパティがないことです。これは、一部のブラウザ、特にFirefoxや最近のWebKitベースのブラウザで実装されていますが、標準ではなく、実際には関数名を取得する標準化された方法はありません。

これは、関数の文字列表現から名前を解析しようとする唯一のオプションです。はいい考えではありませんです。それについての長い議論があります:http://groups.google.com/group/comp.lang.javascript/browse_frm/thread/b85dfb2f2006c9f0

0

あなたはこれを試すことができます。

arguments.callee.caller $名IEのように

を、それは$名あなたはもうこれを行うことはできません

関連する問題