webForumDet fria alternativet

finns struct i javascript?

12 svar · 473 visningar · startad av Prästen

PrästenMedlem sedan dec. 2000534 inlägg
#1

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

JojoxxMedlem sedan juni 20004 306 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;
PepeJeriaMedlem sedan feb. 2003779 inlägg
#3

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

alert(typeof(foo));
PrästenMedlem sedan dec. 2000534 inlägg
#4

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

CheguelinMedlem sedan juli 2003351 inlägg
#5

Man kan skriva såhär med:

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

:)

PrästenMedlem sedan dec. 2000534 inlägg
#6

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

spangoMedlem sedan juni 20006 147 inlägg
#7

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

PrästenMedlem sedan dec. 2000534 inlägg
#8

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

var test[5000]=new Object();

spangoMedlem sedan juni 20006 147 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();
PrästenMedlem sedan dec. 2000534 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?

spangoMedlem sedan juni 20006 147 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
}
PrästenMedlem sedan dec. 2000534 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;

Nexus86Medlem sedan okt. 20022 683 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.

Genererad på 366 ms · cache AV · v20260730165559-full.f96bc7eb