在JS中所有Class实例上执行方法

假设我有一个Class,其方法如下:

class MyClass {

  importantMethod() {
    ... //any code here 
  }

}

假设我有Class的10/20 /更多实例,例如:

const inst1 = new MyClass();
const inst2 = new MyClass();
const inst3 = new MyClass();
.... //and more instances here

Is there a way to execute importantMethod() on each instance in a more elegant way than:

inst1.importantMethod()
inst2.importantMethod()
inst3.importantMethod()
.... //and for all the instances
评论
  • gest
    gest 回复

    Use forEach

    [inst1 , inst2 , inst3].forEach( (item)=> item.importantMethod() ) 
    
  • 蛋小疼
    蛋小疼 回复

    我认为您有2种选择:

    1. 如果可以在初始化时运行并且不引发错误等并且安全,则可以在构造函数中运行它,因此,每次有新实例时,它将调用它……不是最佳实践,但可能……。
    2. 做类似的事情
    const instances = [];
    
    for (let i=0; i<20; i++) {
      const classInstance = new MyClass();
    
      classInstance.ImportantFunction();
      instance.push(classInstance);
    }
    

    这也是一种hack,但是如果您有很多实例,可能会使代码更清晰些...

    如果您关心实例的命名,则可以将上面示例中的数组更改为一个对象,然后将每个带有命名键的实例实际放入该对象中,然后可以更轻松地访问实例。

    至少据我所知,不幸的是,我对类实例化​​不熟悉。