Есть ли способ получить имя вызывающей функции внутри вызываемого абонента?
Возможный дубликат:
Javascript, как вы находите функцию звонящего?
Я экспериментирую с javascript/jQuery немного этим утром и пытался захватить имя вызывающего абонента в текущей исполняемой функции.
Итак, в приведенном ниже примере журнал покажет runMe
в качестве вызывающего и showMe
в качестве вызываемого абонента.
jQuery(document).ready(function($) {
function showMe() {
// should log the runMe as the caller and showMe as callee
console.log('Callee: ',arguments.callee)
console.log('Caller: ',arguments.caller);
}
function runMe() {
// getting executed as a button is pressed.
showMe();
}
$('a').bind('click', function(e) {
e.preventDefault();
runMe();
});
});
Вышеизложенное, очевидно, не работает, поэтому мой вопрос вам всем.
Есть ли хороший способ получить вызывающего абонента в приведенном выше примере?
Обратите внимание: я знаю, что могу получить приглашение runMe
и передать его в showMe
в качестве аргумента, но этот вопрос направлен на решение, которое не требует, чтобы вызывающий объект передавался в функцию "вручную".
Есть ли причины против делать что-то вроде этого?
Ответы
Ответ 1
Раньше вы могли это делать arguments.caller.name
, но это устарело в Javascript 1.3.
arguments.callee.caller.name
(или просто showMe.caller.name
) - это другой путь. Это нестандартно и не поддерживается в строгом режиме, но в настоящее время поддерживается во всех основных браузерах (ref).
Ответ 2
Попробуйте callee.caller
как этот
function showMe() {
// should log the runMe as the caller and showMe as callee
console.log('Callee: ',arguments.callee.name)
console.log('Caller: ',arguments.callee.caller.name);
}
Ответ 3
Это работает для вас?
function showMe() {
// should log the runMe as the caller and showMe as callee
console.log('Callee: ',arguments.callee)
console.log('Caller: ',arguments.callee.caller);
}
Обратите внимание, что это нестандартный javascript.
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/caller
Ответ 4
Я думаю, что это....
arguments.callee.caller