2010-07-08 8 views
11

E 'possibile creare una proprietà su un oggetto javascript che si comporta come una proprietà in C#.Crea una proprietà javascript come la proprietà C#

Esempio: Ho creato un widget di area di ridimensionamento automatico utilizzando dojo. Per ottenere la proprietà "value" dal mio widget, mi sono collegato all'evento onchange e sto impostando una variabile ogni volta che cambia il valore dell'area di testo.

C'è un modo per farlo senza collegarsi all'evento onchange.

Modifica

In altre parole, è possibile scrivere qualcosa in JavaScript che si comporta come getter e/o setter.

risposta

15

E 'possibile in ECMAScript 5 implementazioni, che comprendono recent versions of all major browsers. Le specifiche ECMAScript 5 aggiungono getter e setter standardizzati. Uno strano è che IE 8 ha questa caratteristica, ma solo sui nodi DOM. Questo è ciò che la sintassi si presenta come:

var obj = {}; 

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

C'è stata anche un'implementazione proprietaria di getter e setter in Mozilla per lungo tempo che è stato anche in seguito adottata da WebKit e Opera, ma questo non è disponibile in IE.

-1

Non sono sicuro di cosa stai chiedendo qui. Puoi sempre ottenere il valore di una textarea senza l'evento onchange. dovresti ottenere l'oggetto quindi guardare la proprietà del valore.

per esempio, se il textarea ha un id = "MyText" si può fare

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

Questo lo so John. Grazie. Ho modificato la mia domanda. Spero che ora sia un po 'più chiaro. –

+0

non mi sembra più chiaro. Stai cercando di aggiungere logica alla proprietà getter e setter? – Davy8

+1

È esattamente così –

Problemi correlati