Javascript-Variablen als Objektzeiger

8

Ich habe eine Frage aus Neugier. Also habe ich untersucht, wie JS die Variablenzuweisung handhabt und ich verstehe es. Wie funktioniert die Variablenzuweisung in JavaScript?

Aber das gleiche Prinzip scheint sich in dem folgenden Code, an dem ich arbeite, nicht zu zeigen:

%Vor%

Ich weiß, dass dies eine Standardmethode zum Austauschen von Array-Elementen ist. Aber wenn temp auf playlist1[0] zeigt und der Inhalt von playlist1[0] auf playlist1[1] 's geändert wird, wie komme ich dann nicht mit zwei playlist1[1] -Werten hintereinander?

    
nemo 26.07.2013, 03:16
quelle

4 Antworten

11

Nicht nur Variablen sind Objektzeiger. Alle Werte (die keine Primitive sind) sind Objektzeiger. Also temp ist ein Objektzeiger. playlist1 ist ein Objektzeiger auf ein Array-Objekt, dessen Elemente Objektzeiger sind. z.B. playlist1[0] ist ein Objektzeiger, playlist1[1] ist ein Objektzeiger usw.

  

Aber wenn temp auf playlist1 [0]

zeigt

Das ergibt keinen Sinn. temp ist ein Objektzeiger. Es zeigt auf ein Objekt. playlist1[0] ist kein Objekt; es ist ein Objektzeiger. temp = playlist1[0]; setzt den Objektzeiger temp auf dasselbe Objekt wie der Objektzeiger playlist1[0] .

Wenn Sie C kennen, ist es etwa so:

%Vor%     
newacct 26.07.2013, 05:40
quelle
2

Dies stimmt mit der Antwort in der referenzierten Frage überein: Sie ändern nur, auf welches Objekt die Variable zeigt - nicht auf die Daten, auf die sie verweist. Bedeutung temp wird von der Verschiebung nicht beeinflusst, wenn playlist1 [1] auf playlist1 [2] zeigt. Temp behält den ursprünglichen Wert bei, auf den er gezeigt hat, wenn sowohl die Wiedergabelisten1 [1] als auch die Temp-Datei darauf zeigten. Nur Playlist1 [1] wird aktualisiert

    
TGH 26.07.2013 03:20
quelle
0

Weil diese Referenzen immer noch auf Elemente im Array verweisen und nicht auf die Elemente selbst. Also in der Zeile:

%Vor%

Sie ändern nichts an temp. Vergleichen Sie das mit etwas wie (angenommen, Array-Elemente wären Objekte):

%Vor%

Damit wird tatsächlich der Wert des Objekts im Array zugewiesen, und wenn temp auf die Wiedergabeliste [1] zeigt, entspricht temp.x der Wiedergabeliste [2] .x

    
mckurt 26.07.2013 03:39
quelle
0

sagen wir haben obj={l1:{l2:[1,2]},} und wollen obj.l1.l2[1] mit einem Array von Ebenen wie arr=["l1","l2",1] dann:

adressieren %Vor%

Nach der Definition der "Punkt" -Methode (die nicht aufgezählt werden kann), können wir

verwenden %Vor%

um Wert 2 zu erhalten

    
bortunac 11.09.2015 10:42
quelle

Tags und Links