2012-03-17 3 views
3

Я пишу обработчик событий ошибки, который фиксирует ошибку и делает аякс-вызов для сервера, чтобы сообщить об этом. Проблема заключается в том, что много раз, мой код выглядит следующим образом:javascript: получение имени вызывающей функции

function A() { 

    //lots of works to calculate SomeParameters; can bug 
    CalledVeryOften(SomeParameters); 
} 

function CalledVeryOften(SomeParameters) { 
    // a little bit of work 
} 

Если я захватить событие в функции A (или B, C, D ...), здорово! Но проблема в том, что если событие window.onerror срабатывает в CalledVeryOften, возможно, параметры могут быть неправильно вычислены.

Есть ли способ в CalledVeryOften определить, из какой функции он был вызван?

Спасибо.

ответ

2

имени вызывающей функции может быть получен с помощью осуждается arguments.callee.caller.name свойства MDN: arguments.callee.

Другой способ - разобрать значение new Error().stack.

В Chrome вы можете использовать:

var stackTrace = {}; 
Error.captureStackTrace(stackTrace); // Get the stack trace 
stackTrace = stackTrace.stack;  // Formatted string 
+0

Хорошо, очень здорово; Спасибо, Роб! – frenchie

+0

Да, неважно. Мне нужен кофе :) – Kornel

Смежные вопросы