如何获取es6 class实例的所有函数

How to get all functions of es6 class instance

比如我有一些class有一些方法:

class SomeClass() {
    someMethod1() {
    }
    someMethod2() {
    }
}

我可以获取此 class 实例的所有函数名称吗?

Object.keys(new SomeClass()) 

给我一个空数组。

我想得到像 ['someMethod1', 'someMethod2'] 这样的数组。

您必须在 class 的 prototype 属性 上调用 Object.getOwnPropertyNames()

class Test {
  methodA() {}
  methodB() {}
}

console.log(Object.getOwnPropertyNames(Test.prototype))

请注意,这也包括构造函数,但如果需要,您可以轻松地将其排除:

class Test {
  methodA() {}
  methodB() {}
}

console.log(
  Object.getOwnPropertyNames(Test.prototype)
    .filter(x => x !== 'constructor')
)