La mejor manera de explicar mi problema es a través del siguiente código:
class SomeClass { SomeMethod() { console.log("SomeMethod was called"); } } var someInstance = new SomeClass(); // The below expression expected to return True but is returns False console.log( someInstance.hasOwnProperty("SomeMethod") ); // The below expression is expected to include SomeMethod in the return list, but it doesn't console.log( Object.keys(someInstance) ); // The below expression is expected to include SomeMethod in the return list, but it doesn't console.log( Object.getOwnPropertyNames(someInstance) ); // The below expression works fine which confrms that the function exists. someInstance.SomeMethod(); Esperaría que Object.keys() u Object.getOwnPropertyNames() devuelvan todas las propiedades, incluidos los métodos definidos en la definición de clase de la clase a partir de la cual se construyó este objeto, pero por alguna razón tampoco lo hace.
Si ninguna de estas funciones funciona en tal escenario, ¿cómo puedo enumerar todos los métodos de una instancia de clase?
Puede crear una función personalizada para lograr esto
class SomeClass { SomeMethod() { console.log("SomeMethod was called"); } } var someInstance = new SomeClass(); function getMethods(obj) { return Object.getOwnPropertyNames(Object.getPrototypeOf(obj)) .filter(m => 'function' === typeof obj[m]) } console.log(getMethods(someInstance))