Как сделать так, чтобы this в статической функции класса ES6 указывал на саму функцию - PullRequest
0 голосов
/ 01 ноября 2018

Я хочу получить статическое имя функции в классе ES6, и я не получил правильный результат, когда сделал это.

class Point {
  static findPoint() {
    console.log(this.name) // <- I want to print "findPoint" but get "Point"
  }
}
Point.findPoint()

Что я могу сделать, чтобы получить имя статического метода?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

this.name относится к имени класса. Используйте this.findPoint.name, чтобы получить статическое имя функции. Синтаксис должен быть object.someMethod.name. Вы должны сказать, какое имя метода вы хотите. Надеюсь, это поможет вам.

class Point {
  static findPoint() {
    console.log(this.findPoint.name)
  }
}
Point.findPoint()
0 голосов
/ 01 ноября 2018

Один из вариантов - создать Error и проверить его стек - верхний элемент в стеке будет именем текущей функции:

class Point {
  static findPoint() {
    const e = new Error();
    const name = e.stack.match(/Function\.(\S+)/)[1];
    console.log(name);
  }
}
Point.findPoint();

Хотя error.stack технически нестандартен, он совместим со всеми основными браузерами, включая IE.

...