如何在 Javascript 中创建对象的多个实例

How to create multiple instances of objects in Javascript

我的代码中有一个构造函数对象,它是:

function Employee(){
    this.name = names[Math.floor(Math.random() * names.length)];
    this.age=1;
    this.level=1;
    this.production=400;
    this.totalprod=0;
}

所以当我创建一个新员工时,我只说:

var employee1 = new Employee();

那么我就可以操作对象的这个实例了。现在,我希望使用变量名称动态创建此对象:employee1employee2employee3 等等。有没有办法实现这个或者是不可能的?

我的另一个问题是,我想同时更改所有实例的 age,有没有办法做到这一点?在此先感谢,如果问题愚蠢,我很抱歉,我正在学习!

编辑:这与另一个问题不同,因为我使用的是构造函数对象,而不是文字对象,除此之外,我还问了另一个问题,即如何更改同时 属性 所有实例,谢谢!

如果不使用像 eval 这样的东西,这是不可能的,这是不好的做法。

相反,如果您事先知道要雇用多少员工,则可以这样做。

示例:https://jsfiddle.net/dbyw7p9x/

function makeEmployees(n) {
  var employees = new Array(n)
  for (var i = 0; i < n; ++i) {
    employees[i] = new Employee()
  }
  return employees
}

或者你也可以使它成为 return 一个对象,有趣的是,虽然与数组不完全相同,但可以使用方括号内的数字以与数组相同的方式访问 obj[0], obj[1], obj[2], obj[3]

function makeEmployeesObj(n) {
  var employees = {}
  for (var i = 0; i < n; ++i) {
    employees[i] = new Employee()
  }
  return employees
}

要为每种方法更改 属性,您可以执行以下操作:

// Array
for (var i = 0; i < e1.length; ++i) {
    e1[i].age = 2
}

// Object
Object.keys(e2).forEach(function(key) {
    e2[key].age = 2
})

这是一种方法,使用一个数组,我们将新员工推送给它,然后 return 该数组:

要添加特定值,在本例中为年龄,我建议将其作为参数传递给您的 Employee 构造函数,如果您愿意,可以使用所有 this 参数来执行此操作:

在JsBin中注意各个年龄段是不一样的,其实是n的值:

工作示例:JSBin

    function Employee(age){
    this.name = 'something';
    this.age= age;
    this.level=1;
    this.production=400;
    this.totalprod=0;
}


function maker(n) {
  var arr = [];
  while (n > 0) {
    arr.push(new Employee(n));
    n--;
  }
  return arr;
}