我有一个带有调用其他方法的方法的类:

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/

10-10 15:18