Ecmascript 6 ES6:如果类有方法?

Ecmascript 6 ES6:如果类有方法?,ecmascript-6,Ecmascript 6,我有一个类,它有一个调用其他方法的方法: class MyClass { build(methods) { methods.forEach((method) => { if (this.method) { this.method(); } }); } stuff() {} moreStuff() {} } const a = MyClass(); a.build(['stuff', 'moreStuff']);

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

class MyClass {
  build(methods) {
    methods.forEach((method) => {
      if (this.method) {
        this.method();
      }
    });
  }

  stuff() {}
  moreStuff() {}
}

const a = MyClass();
a.build(['stuff', 'moreStuff']);
我还没有找到任何关于类的特殊方法的参考。我的第一个想法是使用
hasOwnProperty
(但是eslint提醒我不应该在类中使用它)。上述方法无法可靠地工作,因为类具有内置函数


我也在考虑尽可能成为我的救星,但我真的需要一些指导来说明这种情况下的最佳实践是什么?

我想你正在寻找

build (methodnames) {
    for (const methodname of methodnames) {
        if (typeof this[methodname] == "function") {
            this[methodname]();
        }
    }
}

类没有什么特别之处,事实上你应该忽略它们。如果要调用某个方法,唯一重要的是有一个函数作为属性值。方法是否是创建实例的类的prototype对象的自有属性并不重要。

告诉我们您打算如何调用
构建
,请“不要参考类的任何特殊方法”-这是因为类没有什么特殊性,也不需要任何特殊方法。它们像往常一样只是带有
.prototype
对象的构造函数(尽管它们的原型方法不可枚举)。@Bergi我明白,它们只是语法糖,但我真的希望它们会有一些很酷的内省方法。我已经更新了我的代码。我想我应该重构
build
方法并将其分离为一个函数,然后使用某种
Reflect
。您需要的所有冷静的内省都适用于任意对象,而不仅仅是类。谢谢您的示例。因此,您只想
build
调用名称作为数组传递的所有方法?在类中使用此build方法会不会是一种反模式,我是否应该将其分离到另一个函数中?
build
对我来说听起来像一个
静态方法(即
var newInstance=MyClass.build(…)
),但是你写它的方式(或者我在我的答案中写的),它只是一个实例方法,在类中这是完全好的谢谢!这给了我前进的信心。稍后我将不得不阅读更多关于这一切的内容,只是想了解一下新的类特性。