Es gibt arguments.callee.caller
die sich auf die Funktion bezieht, die die Funktion aufgerufen hat, in der Sie auf diese Eigenschaft zugreifen. arguments.callee
ist die Funktion selbst.
Es gibt keine Möglichkeit, den Bereich der ursprünglichen Funktion zu erhalten, ohne ihn zu übergeben. Im folgenden Beispiel können Sie den this
Wert innerhalb foo
(abgesehen davon, dass ich weiß, dass es nichts Besonderes ist mit this
hier):
function foo() {
bar();
}
function bar() {
console.log(arguments.callee); // bar function
console.log(arguments.callee.caller); // foo function
}
foo();
Dokumentation
Um die Zeilennummer zu erhalten, wird es schwieriger, aber Sie können einen Fehler auslösen und sich den Stack-Trace ansehen: http://jsfiddle.net/pimvdb/6C47r/ .
function foo() {
bar();
}
function bar() {
try { throw new Error; }
catch(e) {
console.log(e.stack);
}
}
foo();
Für den Fiddle wird etwas Ähnliches wie das Folgende in Chrome protokolliert, wobei am Ende der Zeile die Zeilennummer und die Zeichenposition angegeben werden:
Error
at bar (http://fiddle.jshell.net/pimvdb/6C47r/show/:23:17)
at foo (http://fiddle.jshell.net/pimvdb/6C47r/show/:19:5)
at http://fiddle.jshell.net/pimvdb/6C47r/show/:29:1