在javascript中创建对象数组

时间:2013-05-11 07:08:16

标签: javascript arrays object

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

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

    Public Structure WidgetsStruc
        Public Name As String 
        Public LocX As Integer
        Public LocY As Integer
    End Structure
    Private myWidgets As New WidgetsStruc
    myWidgets.LocX = 35
    myWidgets.LocY = 312
    myWidgets.Name = "compass"
    Messagebox(myWidgets.Name)              ' shows 'compass'
    ...

在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 - 感谢任何指导!

1 个答案:

答案 0 :(得分:11)

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

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)
];