6

我正在学习来自 .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”和“切片”用于删除)。

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

作为 JavaScript n00b - 感谢您的指导!

4

1 回答 1

13

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

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)
];
于 2013-05-11T07:13:02.687 回答