javascript - 从一个班级

时间:2016-01-08 20:24:57

标签: javascript class oop object

我有一个可以创建对象的类:

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。

3 个答案:

答案 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