2013-05-11 1 views
6

Uczę się javascript pochodzących z. NET w tle. Mam pytanie o to, jak radzić sobie z tablicami obiektów, tworzenie i manipulowanie nie wydaje się tak łatwe/oczywiste jak .NET.tworzenie tablic obiektów w javascript

Często w kodzie .NET używam konstrukcjom (C#) lub struktury (VB.NET) do zarządzania proste konstrukcje wartości, na przykład (w 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' 
    ... 

w javascript z badań I zrobili nie ma nic zupełnie równoważne, chociaż można użyć obiektu i „Push” go na tablicy jak poniżej, które działa:

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'   

może nie jestem przyzwyczajony do pracy w bardziej luźno wpisane język, ale powyższy JavaScript nie wydaje się optymalny (np. konieczność "wypychania" obiektu bez deklaracji czerwoną strukturę do tablicy i inicjowanie zmiennych później, plus "pop" i "slice" do usunięcia).

Czy mam to prawo? Czy istnieje lepszy lub łatwiejszy sposób deklarowania & przy użyciu tablic obiektów? Zajrzałem również do JSON, ale nie do końca wiem, jak to wykorzystać do manipulowania obiektami zdefiniowanymi przez użytkownika w tablicy.

Jako JavaScript n00b - dziękuję za wskazówki!

+0

Twoje podejście jest naprawdę dobre. –

+0

Dzięki - wydedukowałem to z badań, ale nie byłem pewien, czy było to optymalne. – deandob

Odpowiedz

10

Można użyć przedmiotu oraz tablicy dosłownego zapisu:

var widgetTemplats = [ 
    { 
     name: 'compass', 
     LocX: 35, 
     LocY: 312 
    }, 
    { 
     name: 'another', 
     LocX: 52, 
     LocY: 32 
    } 
] 

przypadku prostych rzeczy, takich jak ta, brak wymuszonego struktury jest dość normalne. Jeśli chcesz uzyskać bardziej wymuszoną strukturę lub dołączyć zachowania do swoich obiektów, zajrzyj do klas 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

Myślę, że to może być to, co robię, ponieważ ma więcej struktury. Bawię się tym trochę więcej. Dzięki. – deandob

+0

I mogę użyć "push", aby rozwinąć tablicę z nowymi obiektami. – deandob

+0

Świetny przykład! Miłość, którą dostarczyliście na dwa sposoby. –