如何在 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();
那么我就可以操作对象的这个实例了。现在,我希望使用变量名称动态创建此对象:employee1
、employee2
、employee3
等等。有没有办法实现这个或者是不可能的?
我的另一个问题是,我想同时更改所有实例的 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;
}
我的代码中有一个构造函数对象,它是:
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();
那么我就可以操作对象的这个实例了。现在,我希望使用变量名称动态创建此对象:employee1
、employee2
、employee3
等等。有没有办法实现这个或者是不可能的?
我的另一个问题是,我想同时更改所有实例的 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;
}