如何让ES6静态函数中的thisclass指向函数本身

How to make the this in the static function of the ES6 class point to the function itself

我想获取ES6中的静态函数名class,但我这样做时没有得到正确的结果

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

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

一种选择是创建一个 Error 并检查其堆栈 - 堆栈中的顶部项目将是当前函数的名称:

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

虽然 error.stack 在技术上 是非标准的,但它 compatible 对于包括 IE 在内的每个主要浏览器都是

this.name 引用 class 名称。使用 this.findPoint.name 获取静态函数名。语法必须是 object.someMethod.name。你必须说出你想要的方法名称。希望对您有所帮助。

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