Определить вызывающую функцию в javascript [дублировать]

StackOverflow https://stackoverflow.com/questions/1333498

  •  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 предоставляет все тело функции в виде строки для обеих именованных функций анонимного вызывающего.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top