我有一个可以创建对象的类:
function myClass () {
...
}
var obj = new myClass()
var obj2 = new myClass()
每个对象代表一个连接。它存储一些重要数据,即连接ID等。它工作正常,直到我知道连接数,但实际上可能有0个连接或1000个连接。如何轻松地将对象创建到“for”循环中以自动化制作对象的过程?每个对象都应该易于访问,因此也需要一些命名对象的约定。我很惊讶我在谷歌找不到这样的解决方案。任何帮助都会被贬低。
我的意思是这样的:
function myClass () {
...
}
for (i=0; i<sth.length; i++)
var obj$i = new myClass()
}
Kalreg。
答案 0 :(得分:2)
简单循环并推送到数组:
var myStuff = [];
for (var i=0; i<sth.length; i++)
myStuff.push(new myClass());
}
console.log(myStuff[5]);
或具有命名键的对象
var myStuff = {};
for (var i=0; i<sth.length; i++)
myStuff["foo"+i] = new myClass();
}
console.log(myStuff["foo5"]);
或带有map的数组,因为我正在等待构建...
var count = 15;
var myStuff = Array.apply(null, Array(count)).map(function () {return new myClass();});
答案 1 :(得分:0)
function myClass(i)
{
this.id = i;
}
var n = 1000, objs = {};
for (var i=0;i<n;i++)
{
objs[i] = new myClass(i);
}
console.log(objs[25].id);
答案 2 :(得分:0)
如果您熟悉Javascript中的 OOP ,并且...如果您想控制实例化对象的数量并且能够通过其名称访问任何对象,请考虑以下方法:
function MyClass(){
...
MyClass.count++;
}
MyClass.count = 0; // static property (stores number of objects)
MyClass.objectStorage = {}; // object storage
MyClass.createObjects = function(number){ // static method (creates new objects)
var obj = null;
for (var i = 0; i < number; i++){
obj = new MyClass();
MyClass.objectStorage["object"+ MyClass.count] = obj;
}
};
MyClass.createObjects(10); // let's create 10 objects
MyClass.createObjects(5); // and some more
console.log(MyClass.count); // check how many objects were created
console.log(MyClass.objectStorage["object12"]); // accessing distinct object by name