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 は最適ではないようです (たとえば、宣言された構造のないオブジェクトを配列に「プッシュ」し、その後変数を初期化し、さらに「ポップ」する必要があります)。および削除するための「スライス」)。

私はこれを正しく理解していますか?オブジェクトの配列を宣言して使用するためのより良い、またはより簡単な方法はありますか? 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 に答える