webForumDet fria alternativet

finns struct i javascript?

JavaScript

12 svar · 475 visningar · startad av Prästen

Medlem sedan dec. 2000537 inlägg
Frågan#1

hejsan, i C++ finns nåt som heter struct, finns nåt liknande i Java-script?

Medlem sedan juni 20004 308 inlägg
#2

I JavaScript behöver du inte deklarera en variabel till en viss typ som i C. Hurvida innehållet i variabeln är en boolean, integer, long etc. spelar ingen roll. För att skapa objekt som du sedan tilldelar egenskaper kan du använda object;

var foo=new Object();
foo.bar=12;
foo.foo="Something";
foo.faa=true;
Medlem sedan feb. 2003774 inlägg
#3

Och för att veta vilken typ av variabeln det är kan du

alert(typeof(foo));
Medlem sedan dec. 2000537 inlägg
#4

AAh, coolt!, tack för hjälpen

Medlem sedan juli 2003303 inlägg
#5

Man kan skriva såhär med:

var foo = {
bar: 12,
foo: "Something",
faa: true
}

:)

Medlem sedan dec. 2000537 inlägg
#6

hmm men hur gör man om man vill göra en array av Objects()?

Medlem sedan juni 20008 205 inlägg
#7

Precis som du alltid gör när du har använder arrayer.

Medlem sedan dec. 2000537 inlägg
#8

mmm jaha, men detta gick åt skogen, fick felmeddelande.

var test[5000]=new Object();

Medlem sedan juni 20008 205 inlägg
#9

Så där använder du aldrig en array i vanliga fall heller, eftersom du alltid initialiserar till höger om ett likhetstecken och deklarerar till vänster. Först & främst måste du se till att arrayen faktiskt blir en array:

var arr = new Array(5001);
arr[5000] = new Object();
Medlem sedan dec. 2000537 inlägg
#10

hmm verkar blanda ihop c# och C++

men måste jag nu deklarare varje array som ett object?

var arr = new Array(5001);
arr[0] = new Object();
arr[1] = new Object();
arr[2] = new Object();
arr[3] = new Object();
arr[4] = new Object();

osv?

Medlem sedan juni 20008 205 inlägg
#11

Nej, du deklarerar (eller snarare, initialiserar) en array som du fyller med objekt.

var arr = new Array(666);
for (var i = 0; i < arr.length; i++){
    arr[i] = new Object();
    arr[i].number = i; // eller vad du nu vill ha för värden i objektet
}
Medlem sedan dec. 2000537 inlägg
#12

ok det är lite annorlunda från C++.

tycker java kunde gjort det lite smidigare ändå. man måste ju göra mycket för hand där verkar det som..

i C++ kan man göra såhär:

// göra en struct
struct VERTEXSTRUCT {
int pos;
double normal;
};

// och deklarera och initiera i samma rad
VERTEXSTRUCT *hej=new VERTEXSTRUCT[5000];

också använda dem såhär:

hej[1].pos=123;

Medlem sedan okt. 20023 030 inlägg
#13

Det är väl smidigt nog? I javascript (inte java) så gör du det på 5 rader medan du i C++ gör det på 6.

256 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)