创建对象数组Javascript

时间:2013-11-26 16:06:31

标签: javascript arrays

我用3个属性创建了这个对象:

Node = {
    name : "",
    isOkay : true,
    rotation : 0.0
}; 

如何创建这些对象的数组,大小为100。

所以后来我可以这样做:

nodeList[74].name = "Peter";

nodeList[74].isOkay = false;

nodeList[74].rotation = 1.3;

或类似......

我对此非常陌生,我发现了几个关于此的主题,但它从未正确编译过。

如果有人能够展示正确的语法,我将非常感激,谢谢!

3 个答案:

答案 0 :(得分:1)

我会用这种方式:

var Node = function() {
    this.name = "";
    this.isOkay = true;
    this.rotation = 0.0
}

var nodeList = [];
for (var i = 0; i < 10; i++) 
{ 
    nodeList.push(new Node()); 
}

nodeList[0].name = "test";

所以你可以创建一个 new 对象(真的很新),以便以后管理它。看here

修改

我所做的是使用构造函数方法创建一个对象,您可以在MDN here上查看它。

像你一样创建一个对象:

var Node = { /* ... */ }

就像启动一个对象一样。要有另一个,你必须写另一个,依此类推。使用该构造函数,您可以根据模型创建所需的任何实例。

答案 1 :(得分:0)

您可能想要懒惰地执行此操作

根据情况可能有助于懒惰地进行此操作

var Node = function(name, isOkay,rotation){
    if(!(this instanceof Node)) return new Node(name,isOkay,rotation);
    else {
        this.name = name;
        this.isOkay = isOkay;
        this.rotation = rotation;
    }
}

var NodeCollective = function(numberOfNodes){
        if(!(this instanceof NodeCollective)) return new NodeCollective(numberOfNodes);
        else{
                var _collective={};
                var _defaultName = "", _defaultIsOkay = true, _defaultRotation=0.0;
                this.length = numberOfNodes;
                this.getNode=function(nodeNumber){
                    if(!_collective.hasOwnProperty(nodeNumber) && nodeNumber < numberOfNodes){
                        _collective[nodeNumber]=
                            Node(_defaultName,_defaultIsOkay,_defaultRotation);
                    }
                    //I am just assuming I am not going to get garbage
                    //you can put in checks to make sure everything is kosher
                    //if you really want to
                    return _collective[nodeNumber];
                };
        }
}

但它也取决于你要做什么...如果你可能没有得到程序中的所有节点然后以某种方式实现它们,避免贪婪地创建它们可以节省你很多时间,如果代码经常被执行,但是如果这段代码没有被执行,那么这可能会被过度杀死。

答案 2 :(得分:-1)

var nodeList = [];          // create empty array
nodeList.push(Node);        // add the object to the end of the array
nodeList[0].rotation = 1.3; // set rotation property of the object
console.log(nodeList[0]);   // prints the object to console