Как динамически получить имя функции, которая выполнила другую функцию? - PullRequest
0 голосов
/ 17 октября 2018

Мне нужно найти динамический способ узнать, какая функция (которых больше 2) выполнила другую определенную функцию, в которой будет возвращена функция вызывающей стороны.

В настоящее время у меня есть следующий код, который не 't работа:

function Hello() {
  _alert("caller is " + Hello().caller);
}

Bye();
function Bye() {
  Hello();
}

Сообщение об ошибке следующее: ReferenceError: Hello не определено

Если этот метод не работает, может быть, это возможно с помощью параметров?

Может быть несколько функций-исполнителей для целевой функции, которая выдает имя функции-исполнителя, в какое время она выполняется.

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Используйте Hello без вызова:

function Hello() {
  alert("caller is " + Hello.caller);
}

Bye();
function Bye() {
  Hello();
}

Но имейте в виду, что этот код будет работать только в нестрогом режиме.Такой код выдаст ошибку:

'use strict';
function Hello() {
  alert("caller is " + Hello.caller);
}

Bye();
function Bye() {
  Hello();
}
0 голосов
/ 17 октября 2018

Когда-то были arguments.callee и arguments.caller (вы можете гуглить их), но теперь они устарели, и в настоящее время нет способа узнать, кто звонил.Вы должны сделать что-то вроде этого:

function Hello(caller) {
  alert("caller is " + caller);
}

Bye();
function Bye() {
  Hello('Bye');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...