К предисловию, вы действительно не должны этого делать. Ваш вопрос почти наверняка означает, что вы разрабатываете что-то неправильно, и это приведет к отключению больших оптимизаций в версии 8.
Но вы можете это сделать.
Изнутри функции доступна волшебная переменная arguments
. Это массив, который содержит все аргументы этой функции. Кроме того, он имеет некоторые интересные свойства - один из которых - callee
. Это ссылка на функцию, в которой вы сейчас находитесь. Она также имеет несколько интересных свойств. Один из них - arguments
, который указывает на исходный объект arguments
. Тот, который мы ищем, - caller
.
Таким образом, изнутри функции arguments.callee.caller
является ссылкой на вызывающую функцию.
Опять же, пожалуйста, не делайте этого. Вы должны задать другой вопрос с большим контекстом, чтобы кто-то мог помочь вам решить настоящую проблему.
Вы не имеете в виду функцию «parent» и «child», вы имеете в виду функцию «вызов» и «вызов». Нет, вы не можете видеть вызывающую функцию от вызываемой функции. Если вы хотите это сделать, значит, что-то не так с вашей логикой. Что вы подразумеваете под «call return parent function»? – 2014-09-04 16:58:47