【问题标题】:Control Active Constructors Based on Index基于索引控制活动构造函数
【发布时间】:2018-07-14 17:25:22
【问题描述】:

我希望能够用它们的 id(数组中的位置)控制构造函数我不确定是否可以杀死单个构造函数的进程,但这就是我正在寻找的。我需要能够使用列表中的索引来停止和启动构造函数。

class Worker {
  constructor(id, fname, lname) {
    this.id = id;
    this.fname = fname;
    this.lname = lname;
    this.age = age;
  }
  if (this.id===1) {
    process.exit()
  } else {
    console.log(fname+" "+lname+" "+age);
  }
}

let fnames = ["johnathan", "richard", "david", "hayden", "josh", "harry", "raymond", "braylon", "john", "kent"];
let lnames = ["smith", "scott", "richards", "stine", "davidson", "dominic", "weltz", "joseph", "daigle", "goodman"];

for (let i = 0; i < 10; i++) {
  let worker = new Worker(i, fnames[i], lnames[i]);
  workers.push(worker);
}

【问题讨论】:

  • 构造函数不是可以从外部杀死的进程。它只是初始化一个实例然后返回它,在此之前不会发生任何其他事情。那么您究竟希望“开始和停止”什么?

标签: javascript constructor


【解决方案1】:

我不清楚您所说的“杀死构造函数的进程”是什么意思。 JavaScript 是一种垃圾收集语言,因此运行时会在不再引用对象实例时为您删除对象实例。

请参阅此帖子,虽然不是您的重复,但与您的帖子相似:JavaScript: Create and destroy class instance through class method

但是,如果您想在构造时根据其 id 值触发实例上的某些方法调用,您可以这样做:

class Worker {
  constructor(id, fname, lname) {
    this.id = id;
    this.fname = fname;
    this.lname = lname;
    this.age = age;
    if (this.id===1) {
      this.someMethod();
    } else {
      console.log(fname+" "+lname+" "+age);
    }
  }

  someMethod(){
    // do the thing here
  }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    相关资源
    最近更新 更多