Ich versuche den Namen der aktuell laufenden Funktion zu erhalten. Nach dem, was ich gelesen habe, sollte dies möglich sein mit:
%Vor%Wenn ich dies jedoch in Firefox und Safari (neueste Versionen auf Mac) ausführe, wird der Name nicht zurückgegeben.
console.log (arguments.callee) liefert die Quelle der Funktion, aber nicht den zugewiesenen Namen. arguments.callee.name gibt eine leere Zeichenfolge zurück.
Mein Beispielcode lautet wie folgt:
%Vor%Die typischen arguments.callee-Hacks funktionieren hier nicht, weil dem, was Sie getan haben, eine anonyme Funktion als Wert für den 'testfunc'-Schlüssel des Objekts zugewiesen wird. In diesem Fall wird das Hacken sogar noch schlimmer, aber es kann wie folgt gemacht werden:
%Vor%Sie haben eine anonyme Funktion mit
deklariert %Vor%Sie sollten es als
deklarieren %Vor%um den Namen zu drucken.
Auf Firefox 3.5, Safari 5 und Chrome 6.0 können Sie Folgendes verwenden:
%Vor%Sie können die Funktion, die die aktuelle aufgerufen hat, auch mit arguments.callee.caller erhalten.
Was ist mit dem Backslash vor [
? Ich glaube nicht, dass Sie hier eine wörtliche eckige Klammer haben wollen. Ohne das sollte es funktionieren.
Obwohl ich stark empfehle, nichts mit dem Namen der Schnüffelfunktion zu tun oder vor allem mit der Funktion des Schnüffelns. Fast alles, was Sie mit diesen scheußlichen Hacks machen könnten, wird besser mit einer Kombination von Closures und Lookups durchgeführt.
Ich denke, es gibt eine viel sauberere und elegante Lösung für all das. Angenommen, die Funktion ist Mitglied eines übergeordneten Objekts - und das wird immer der Fall sein, selbst wenn der Eigentümer der Funktion "window" oder ein anderes globales Objekt ist, können wir über das this
Das sollte robust sein und irgendwelche seltsamen IE-Browser-Verhaltensweisen beim Zugriff auf benannte Funktionen, etc. vermeiden.
Ich fand, dass wenn Sie einfach das Funktionsobjekt wie folgt protokollieren:
%Vor%oder
%Vor%, dass Sie einfach den Funktionsnamen im Konsolenprotokoll mit einigen Optionen erhalten.
Tags und Links javascript function