Die Antwort auf Ihre Frage lautet "ja", aber ich denke, dass Ihre Frage nicht genau beschreibt, was Sie zu tun versuchen. Was Sie möchten, ist für letters.a
der Verweis auf die Variable "my_a" im Sinne dessen, was man in C ++ mit dem Operator &
tun kann. Das ist in JavaScript nicht möglich.
Bei der Aussage:
%Vor% Sie geben "my_a" einen neuen, anderen Wert. Daher bezieht sich letters.a
immer noch auf dasselbe, während "my_a" geändert wurde. Es gibt keine Möglichkeit, eine Variable oder Objekteigenschaft dazu zu bringen, eine andere (in JavaScript) zu "verfolgen".
edit - tatsächlich kommt es mir vor, dass Sie etwas tun könnten, wonach Sie suchen, indem Sie einen "Getter" für die "a" Eigenschaft von "Buchstaben" definieren, einen, der den aktueller Wert von "my_a". Es würde diese Funktion in der JavaScript-Engine erfordern, die Sie verwenden, aber es würde ungefähr so aussehen:
%Vor%IE vor IE9 unterstützt das leider nicht. Hier ist die aktualisierte jsfiddle.
Sie können 2 Variablen auf dasselbe Objekt oder denselben Wert in Javascript wie folgt verweisen:
%Vor%Außerdem müssen Sie den Objektkonstruktor nicht verwenden, geschweifte Klammern dienen als Konstruktor und speichern die Typisierung. Dh, das:
%Vor%Entspricht:
%Vor%Sie sind verwirrt durch das Konzept der Zeiger. Wenn Sie ein Objekt in einer Variablen speichern, speichern Sie die Adresse dieses Objekts in der Variablen.
Also, my_a und letters.a enthalten beide die Adresse des gleichen Objekts. dann ändern Sie my_a, um die Adresse eines neuen Objekts zu enthalten. Aber letters.a enthält immer noch die Adresse des ersten Objekts!
So haben Sie am Ende Ihres Skripts my_a auf das Objekt 'c' und l chares.a auf das Objekt 'a' zeigen.
Die einzige Möglichkeit, Buchstaben.a und meine_a auf das Objekt zu zeigen, das Sie 'c' nennen, ist es,
zu tun %Vor%erneut, indem Sie letters.a so einstellen, dass die Adresse des neuen 'c'-Objekts enthalten ist.
Übrigens enthalten Variablen, die einen grundlegenderen Typ haben (wie ints, char), tatsächlich den Wert der Variablen selbst, nicht einen Zeiger auf die tatsächlichen Daten.
Ja, es ist möglich.
Sie waren in der richtigen Richtung, haben aber einen kleinen Fehler gemacht.
Wenn Sie var letters = {'a': my_a, 'b': my_b};
initialisiert haben, haben Sie das Objekt eingefügt, auf das my_a in diesem Moment auf zeigte .
Das Ändern von my_a
später hat letters
nicht geändert, da es bereits einen direkten Zeiger auf Object('a')
enthält.
Tags und Links javascript pointers pass-by-reference