我有一个带有调用其他方法的方法的类:
class MyClass {
build(methods) {
methods.forEach((method) => {
if (this.method) {
this.method();
}
});
}
stuff() {}
moreStuff() {}
}
const a = MyClass();
a.build(['stuff', 'moreStuff']);
我找不到任何关于类的特殊方法的引用。我的第一个想法是使用
hasOwnProperty
(但是 eslint 唠叨我不应该在类里面使用它)。由于类具有内置函数,因此上述方法无法可靠地工作。我也认为 Reflect 可能是我的救命稻草,但我真的可以使用一些指导来说明这种情况的最佳实践是什么?
最佳答案
我想你正在寻找
build (methodnames) {
for (const methodname of methodnames) {
if (typeof this[methodname] == "function") {
this[methodname]();
}
}
}
类没有什么特别之处——事实上你应该忽略它们。如果你想调用某个方法,唯一重要的是有一个函数作为属性值。方法是否是创建实例的类的原型(prototype)对象的自己的属性并不重要。
关于ecmascript-6 - ES6 : If class has method?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39649658/