2016-09-27 83 views
2

例如所有功能,我有一些類的一些方法:如何獲得ES6類實例

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

我能得到這個類實例的所有函數名?

Object.keys(new SomeClass()) 

給了我一個空的數組。我想獲得像['someMethod1', 'someMethod2']這樣的數組。

回答

5

您必須致電Object.getOwnPropertyNames()關於該類的prototype屬性。

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

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

注意,這還包括構造函數,但你可以很容易地排除它,如果你想:

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

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

+1

我知道這個問題沒要求它,但僅供參考,它不會顯示靜態或繼承的方法。 – CodingIntrigue