如何在ES6类的静态函数中使其指向函数本身

时间:2018-11-01 08:34:39

标签: javascript static es6-class this-pointer

我想获得ES6类中的静态函数名称,而这样做时并没有得到正确的结果。

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

如何获取静态方法的名称?

2 个答案:

答案 0 :(得分:2)

一种选择是创建一个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)中都是compatible

答案 1 :(得分:0)

this.name是指类名。使用this.findPoint.name获取静态函数名称。语法必须为object.someMethod.name。您必须说出所需的方法名称。希望对您有帮助。

class Point {
  static findPoint() {
    console.log(this.findPoint.name)
  }
}
Point.findPoint()