Определить вызывающую функцию в javascript [дублировать]
-
20-09-2019 - |
Вопрос
Возможный Дубликат:
Как вы узнаете вызывающую функцию в JavaScript?
Как я могу узнать в функции javascript, которая была вызывающей (первой в стеке вызовов) функцией?
Я хотел бы определить, является ли ранее вызванная функция __doPostBack __doPostBack в событии onbeforeunload .
Решение
Каждая функция имеет caller
определено свойство.
От https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Function/caller:
function myFunc() {
if (myFunc.caller == null) {
return ("The function was called from the top!");
} else
return ("This function's caller was " + myFunc.caller);
}
}
В Function.caller
свойство не является частью стандарта ECMA3, но оно реализовано во всех основных браузерах, включая IE и Firefox.
Если вы используете анонимную функцию, вы все равно можете получить доступ к caller
собственность через arguments.calee
свойство:
function() {
if (arguments.callee.caller == null) {
return ("The function was called from the top!");
} else
return ("This function's caller was " + arguments.callee.caller);
}
}
Обратите внимание, что этот код обращается к текущей функции, а затем ссылается на ту же самую нестандартную caller
собственность на нем.Это отличается от использования устаревший arguments.caller
собственность непосредственно, которая является не реализовано в некоторых современных браузерах.
Другие советы
В chromeos на cr-48 arguments.callee.caller предоставляет все тело функции в виде строки для обеих именованных функций анонимного вызывающего.