• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Member Variable als Referenz

DarkDragon193

Neues Mitglied
Hallo, HTML.de-Community!

Ich habe mich neulich gefragt, wie man in JavaScript Variablen referenziert. Ich wusste, dass Objekte referenziert werden, auch dass Variablen nicht referenziert werden. Die Lösung wäre somit, ein Objekt zu erstellen, das diese Variable als Eigenschaft erhält. Für mein Vorhaben hätte das aber keinen Sinn mehr, da ich die "extend"-Funktion bekannter Libraries verwendet habe, um ein Objekt mit den Eigenschaften eines HTML-Elementes zu erweitern. (Natürlich "oberflächlich", da das Clonen in einer Endlosschleife enden würde.) Das hat auch soweit geklappt, nun ist mir aufgefallen, dass diese Variablen keinen Einfluss auf das Element haben, was ja eigentlich auch Sinn ergibt. Über eine zusätzliche Eigenschaft habe ich das Element referenziert und mir somit ein Workaround geschaffen. Damit bin ich aber nicht zufrieden. Wenn ich jetzt nur dafür erneut ein Objekt erstellen würde, um auf die einzelnen Variablen zuzugreifen, kann ich genauso gut über das Workaround darauf zugreifen. An sich würde das ganze auch nicht kompliziert sein, es wäre nur "gemütlicher", diese Eigenschaft nicht ständig eingeben zu müssen, und wie ich finde auch ästhetisch schöner. ;)

Wenn jemand da was kennt bin ich offen für die Antwort!
 
Werbung:
Nicht Variabeln, sondern primitive werte, werden in JS als Referenz übergeben.

Aber ansonsten kann ich in deinen Ausführungen nicht erkennen, wie man helfen könnte. Du hast die Sachlage ja erkannt und beschrieben, ich verstehe aber nicht wo dein Problem ist.
 
Es ist kein wirkliches Problem. Ich möchte diese Primitiven Werte sozusagen wie folgt aufrufen können:
Code:
Objekt.innerHTML
// Als "Shortcut" zu
Objekt.context.innerHTML
Das geht soweit auch, wenn ich dem "Shortcut" allerdings einen Wert zuweise bleibt "context" unbeeinflusst, da diese Eigenschaft eine "unabhängige" Kopie des Originals ist.

Wie gesagt, das ganze ist nicht zwingend nötig, ich hab mir einfach nur ein paar Gedanken gemacht, wie ich mein Script verbessern könnte. ;)
 
Werbung:
Ach so, du willst einen setter.

Code:
<div id="test">test</div>

<script type="text/javascript">

function Obj() {
	this.innerHTML;
	var dom_obj = document.getElementById('test');
	var setter = this.__defineSetter__;
	if(setter) setter.call(this, "innerHTML", function(val){
        dom_obj.innerHTML = val;
    });
	alert(setter);
}

var o = new Obj();
o.innerHTML = 'neu';

</script>

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineSetter
defineSetter Method (style, rule, currentStyle, ...)
 
Aber Obacht - der IE hat damit Probleme, es steht zwar bei msdn dass es im IE 8 gehen würde, ich hab das aber vorhin nicht zum laufen gebracht.
 
Werbung:
Zurück
Oben