我想获得ES6类中的静态函数名称,而这样做时并没有得到正确的结果。
class Point {
static findPoint() {
console.log(this.name) // <- I want to print "findPoint" but get "Point"
}
}
Point.findPoint()
如何获取静态方法的名称?
答案 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()