📅  最后修改于: 2023-12-03 15:16:15.756000             🧑  作者: Mango
在 JavaScript 中,可以使用 Object 类的 getOwnPropertyNames()
方法获取对象的所有属性名称,包括方法名称。如果需要获取类的所有方法,则可以使用该方法获取对象的属性名称,并过滤掉不是函数的属性名称。
以下是示例代码,演示如何使用 getOwnPropertyNames()
方法获取类的所有方法:
class MyClass {
constructor(name) {
this.name = name;
}
sayHello() {
console.log(`Hello, ${this.name}!`);
}
sayGoodbye() {
console.log(`Goodbye, ${this.name}!`);
}
}
const myInstance = new MyClass('Alice');
const methodNames = Object.getOwnPropertyNames(Object.getPrototypeOf(myInstance)).filter(name => typeof myInstance[name] === 'function');
console.log(methodNames); // ["sayHello", "sayGoodbye"]
首先创建了一个 MyClass
类,该类有两个方法 sayHello()
和 sayGoodbye()
。然后创建了一个该类的实例 myInstance
。
接下来使用 getOwnPropertyNames()
方法获取 myInstance
实例的所有属性名称,Object.getPrototypeOf(myInstance)
返回实例的原型对象,即 MyClass.prototype
。然后通过 filter()
方法过滤出所有值为函数类型的属性名称,即类的所有方法名称。
最后输出所有方法名称,即可得到该类的所有方法。