Есть ли способ получить имя вызывающей функции внутри вызываемого абонента?

Возможный дубликат:
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);
      }

Ответ 4

Я думаю, что это....

arguments.callee.caller