Hallo,
kann man in Javascript ein Objekt bzw eine Variable referenzieren?
Also wie in PHP mit:
GrußCode:$a = & $b;
nEox
Hallo,
kann man in Javascript ein Objekt bzw eine Variable referenzieren?
Also wie in PHP mit:
GrußCode:$a = & $b;
nEox
Was hast du damit vor?
Normalerweise werden alle Objekte als Referenzen behandelt, wenn man sie an Funktionen weiterschiebt (im Gegensatz zu den "einfachen" Variablen wie z.B. Integers).
so long,
BlueJay
Hallo BlueJay,
also, ich suche eine (bessere) Lösung für folgendes Problem:
Eine Lösung wäre den Namen des Objekts zu verwenden (in diesem Fall: myobj) - den müsste man dann auch für "this" nehmen.Code:function funcname_hide() { // ausblenden } function funcname_show() { // einblenden } function funcname(str_layer) // "constructor" { this.obj_layer = getLayerRef(str_layer); // referenziert den Layer je nach Browser /* zuweisen der Methoden */ this.hide = funcname_hide; this.show = funcname_show; /* Das "Problem" ist, dass wenn ich einen Event fuer den Layer definiere. Ich würde gerne eine Methode des Objekts "funcname" aufrufen(z.B. this.hide()). Da der Browser aber beim Ausführen des Events nicht auf "this" zugreifen kann, habe ich es per Zuweisen auf ein globales Objekt umgangen. */ this.obj_searchForm.onkeydown = function hide_construct(e){ window.test.checkScroll(e); } this.obj_searchForm.onkeyup = function show_construct(){ window.test.search(); } window.test = this; /* Das funktioniert auch soweit. Allerdings habe ich dann das Problem, dass wenn ich eine Variable des Objekts ändere, das diese Änderungen nicht übernommen werden. Wenn ich also das this-Objekt irgendwie referenzieren könnte wär das ganze um einiges übersichtlicher. */ } myobj = funcname("layername"); myobj.hide();
Allerdings wäre das Objekt dabei wesentlich abhängiger und auch nur einmal verwendbar.
Deshalb wär so eine Referenz wie in PHP die beste Lösung. Hab aber per Google nichts brauchbares zum Thema gefunden.
Gruß
nEox
Hu? Der Sinn erschließt sich mir nicht so ganz.Zitat von nEox
Du hast deinen Konstruktor (Schablone), da kannst du eigentlich erst mal nirgendwo zugreifen, sondern nur (Bau-)Elemente für dein Objekt definieren.
Danach musst du dir sowieso erst mit Hilfe dieser Schablone die Objekte erzeugen:
my_obj= new funcname("mein_layername");
und diese reagieren dann in (hoffentlich) gewünschter Weise.
Das mit der Abhängigkeit habe ich jetzt nicht kapiert. Und wieso nur einmal verwendbar? Oder brauchst du eventuell mehrere Objekte?Allerdings wäre das Objekt dabei wesentlich abhängiger und auch nur einmal verwendbar.
Du kannst dir ja ohne weiteres ganze Arrays von Objekten aus der Schablone erstellen.
so long,
BlueJay
Hallo BlueJay,
sorry, das "new" hab ich vergessen. War aber so gemeintmy_obj= new funcname("mein_layername");
Mh, gemeint habe ich das in etwa so:Das mit der Abhängigkeit habe ich jetzt nicht kapiert. Und wieso nur einmal verwendbar? Oder brauchst du eventuell mehrere Objekte?
Das ist aber abhängig vom Namen des "globalen Objekts" und wenn ich das Objekt mehrmals erzeuge, überschreibe ich ja das globale Objekt.Code:function funcname(..) { // layer referenzieren .... // Verwendung eines globalen Objekts window.myobj.hide = funcname_hide; window.myobj.show = funcname_show; // ... dann kann man es einfach an den Event übergeben window.myobj.obj_searchForm.onkeydown = function hide_construct(e){ window.myobj.hide(e); } }
Mein Problem ist die Über- bzw. Weitergabe des Objekts, damit der Browser die gewünschte Funktion beim Event ausführen kann.
Gruß
nEox
Das mit den mehreren Objekten hatte ich so gemeint:Zitat von nEox
Globales Objekt sei Layer[],
Spezial-Layers von dir seien:
Layer["Nummer1"],Layer["Nummer2"] u.s.w.
und diese sollte das gewünschte Verhalten aufweisen.
Wenn du andere (normale) Objekte erzeugst, sollten diese noch ihre Ursprungseigenschaften und functions haben. Da wird eigentlich nix überschrieben.
Wenn der Body-Teil noch nicht fertig geschrieben ist, kannst du deine Objekte mit document.write an die gewünschten Stellen einhängen, sonst musst du schauen, ob es ein "Mutterobjekt" gibt, was eine Einfüge-Funktion zur Verfügung stellt. Das node-Objekt ist da immer hilfreich.Mein Problem ist die Über- bzw. Weitergabe des Objekts, damit der Browser die gewünschte Funktion beim Event ausführen kann.
SelfHTML ist überarbeitet worden, ich rate dir, dich da umzuschauen.
http://de.selfhtml.org/
so long,
BlueJay
Hallo BlueJay,
ahhh, hab das mit den Array erst nicht ganz verstanden. Danke, das macht das Ganze um einiges übersichtlicher
Gruß
nEox
Lesezeichen