2010-07-08 11 views
11

Ist es möglich, eine Eigenschaft für ein JavaScript-Objekt zu erstellen, das sich einer Eigenschaft in C# ähnlich verhält?JavaScript-Eigenschaft wie C# -Eigenschaft erstellen

Beispiel: Ich habe ein Auto-Sizing Textarea-Widget mit Dojo erstellt. Um die "value" -Eigenschaft aus meinem Widget herauszuholen, habe ich mich mit dem onchange-Ereignis verbunden und setze jedes Mal eine Variable, wenn sich der Wert des Textfelds ändert.

Gibt es eine Möglichkeit, dies zu erreichen, ohne sich an das Onchange-Ereignis anzuschließen.

bearbeiten

Mit anderen Worten ist es möglich, etwas in JavaScript zu schreiben, wie Getter und/oder Setter verhält.

Antwort

15

Es ist möglich, in ECMAScript 5-Implementierungen, die recent versions of all major browsers umfassen. Die ECMAScript 5-Spezifikation fügt standardisierte Getter und Setter hinzu. Eine Besonderheit ist, dass IE 8 diese Funktion hat, aber nur auf DOM-Knoten. Dies ist, was die Syntax wie folgt aussieht:

var obj = {}; 

Object.defineProperty(obj, "value", { 
    get: function() { 
     return this.val; 
    }, 
    set: function(val) { 
     this.val = val; 
    } 
}); 

Es gibt auch eine proprietäre Implementierung von Getter und Setter in Mozilla für eine lange Zeit, die auch von WebKit und Opera später angenommen wurde, aber das ist in IE nicht verfügbar.

-1

Ich bin mir nicht sicher, was Sie hier fragen. Sie können den Wert eines Textbereichs immer ohne das Ereignis onchange abrufen. Sie müssten das Objekt holen und dann die Eigenschaft value betrachten.

zum Beispiel, wenn Ihr Textfeld eine ID = "mytext" können Sie tun

var mytextarea = document.getElementById("mytext"); 
var text = mytextarea.value; 
+0

So viel kenne ich John. Vielen Dank. Ich habe meine Frage bearbeitet. Ich hoffe, es ist jetzt ein wenig klarer. –

+0

es scheint mir nicht klarer. Möchten Sie der Eigenschaft Getter und Setter Logik hinzufügen? – Davy8

+1

Das ist es genau –