Можно ли получить имя родительской функции в JavaScript? - PullRequest
0 голосов
/ 24 октября 2019
class B{

  constructor()
    // how to determine the function name in which this object was created?
  }

}


function a(){
  let b = new B();

}

В конструкторе BI нужно выяснить, в какую функцию она была вызвана. Мне нужно имя функции, которое в данном примере равно a.

Возможно ли это с помощью js?

Ответы [ 2 ]

2 голосов
/ 24 октября 2019

Да, Error.stack ...

class B {

  constructor() {
    // how to determine the function name in which this object was created?
    const ex = new Error()
    console.log('call from [', ex.stack.split('\n')[2].trim().split(' ')[1], ']');

  }

}

function a() {
  let b = new B();

}

function helloWorld() {
  let b = new B();

}


a();
helloWorld();
2 голосов
/ 24 октября 2019

создать ошибку и использовать ее стек;

function foo() {
  var err = new Error();
  var stack = err.stack; // This is an array of stack frames
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...