2013-05-11 24 views
6

私は、Javaの背景から来ているJavaScriptを学んでいます。オブジェクトの配列を扱う方法について質問があります。作成や操作は.NETほど簡単ではないようです。研究IからJavaScriptでJavaScriptのオブジェクトの配列を作成

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' 
    ... 

は、多くの場合、.NETコードに私は(VB.NETで)例えば、単純な値の構造を管理するための構造体(C#の)または構造(VB.NET)を使用しますあなたが働くそれ以下のような配列にオブジェクトおよび「プッシュ」それを使用することができますが、非常に同等のものは、ありません行っている。

たぶん私はより緩やかに型付けされた中での作業に慣れていない
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として - ご指導いただきありがとうございます!

+0

あなたのアプローチは本当に良いです。 –

+0

ありがとう - 私は研究からこれを推測しましたが、それが最適であるかどうかはわかりませんでした。 – deandob

答えて

10

あなたがオブジェクトと配列リテラル表記を使用することができます。このような単純なもののため

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

これはもっと構造を持っているので、これが私の後であるかもしれないと思います。私はこれ以上いくつか一緒にプレイします。ありがとう。 – deandob

+0

そして私は新しいオブジェクトで配列を展開するために 'push'を使うことができます。 – deandob

+0

すばらしい例!あなたがそれを行うには2つの方法を提供したことを愛する。 –

関連する問題