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

Mor*_*ney 2 javascript methods class ecmascript-6 es6-class

例如,我有一些类有一些方法:

class SomeClass() {
    someMethod1() {
    }
    someMethod2() {
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Object.keys(new SomeClass()) 
Run Code Online (Sandbox Code Playgroud)

给了我一个空数组.

我想要像数组一样['someMethod1', 'someMethod2'].

Mic*_*ski 5

你必须要求上课Object.getOwnPropertyNames()prototype财产.

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

console.log(Object.getOwnPropertyNames(Test.prototype))
Run Code Online (Sandbox Code Playgroud)

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

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

console.log(
  Object.getOwnPropertyNames(Test.prototype)
    .filter(x => x !== 'constructor')
)
Run Code Online (Sandbox Code Playgroud)

  • 我知道这个问题不是必需的,但是仅出于参考目的,它不会显示静态或继承的方法。 (2认同)