Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中创建对象数组_Javascript_Arrays_Object - Fatal编程技术网

在javascript中创建对象数组

在javascript中创建对象数组,javascript,arrays,object,Javascript,Arrays,Object,我是从.NET背景学习javascript的。我有一个关于如何处理对象数组的问题,创建和操作不像.NET那么容易/明显 在.NET代码中,我经常使用结构(c#)或结构(VB.NET)来管理简单的值构造,例如(在VB.NET中): 在我所做的研究中,javascript中没有任何完全等效的东西,尽管您可以使用一个对象并将其“推”到一个数组上,如下所示: var widget = new Object(); var widgetTemplates = new Array();

我是从.NET背景学习javascript的。我有一个关于如何处理对象数组的问题,创建和操作不像.NET那么容易/明显

在.NET代码中,我经常使用结构(c#)或结构(VB.NET)来管理简单的值构造,例如(在VB.NET中):

在我所做的研究中,javascript中没有任何完全等效的东西,尽管您可以使用一个对象并将其“推”到一个数组上,如下所示:

    var widget = new Object();
    var widgetTemplates = new Array();
    widgetTemplates.push(widget);
    widgetTemplates[0].name = "compass";
    widgetTemplates[0].LocX = 35;
    widgetTemplates[0].LocY = 312;
    alert(widgetTemplates[0].name);          // also shows 'compass'          
也许我不习惯使用更松散类型的语言,但上面的JavaScript似乎并不理想(例如,必须将没有声明结构的对象“推”到数组中,然后初始化变量,再加上用于删除的“pop”和“slice”)

我说得对吗?是否有更好或更简单的方法来声明和使用对象数组?我还研究了JSON,但不确定如何使用它来操作数组中的用户定义对象


作为JavaScript n00b-感谢您的指导

您可以使用对象和数组文字表示法:

var widgetTemplats = [
    {
        name: 'compass',
        LocX: 35,
        LocY: 312
    },
    {
        name: 'another',
        LocX: 52,
        LocY: 32
    }
]
对于这样简单的事情,缺乏强制结构是很正常的。如果您确实想要更强制的结构,或者想要将行为附加到对象,那么您应该查看JavaScript中的类:

var Widget = function(name, x, y) {
    this.name = name;
    this.LocX = x;
    this.LocY = y;
};

var widgets = [
    new Widget('compass', 35, 312),
    new Widget('another', 52, 32)
];

你的方法真的很好。谢谢-我从研究中推断出这一点,但不确定它是最优的。我想这可能是我想要的,因为它有更多的结构。我再玩一会儿。谢谢。我可以使用“推送”来用新对象扩展阵列。很好的例子!我爱你提供了两种方法。
var Widget = function(name, x, y) {
    this.name = name;
    this.LocX = x;
    this.LocY = y;
};

var widgets = [
    new Widget('compass', 35, 312),
    new Widget('another', 52, 32)
];