Reputation: 6776
Is it possible to create a property on a javascript object that behaves similar to a property in C#.
Example: I've created an auto-sizing textarea widget using dojo. In order to get the "value" property out of my widget, I've hooked up to the onchange event and I'm setting a variable everytime the value of the textarea changes.
Is there a way to accomplish this without hooking up to the onchange event.
Edit
In other words, is it possible to write something in JavaScript that behaves like getters and/or setters.
Upvotes: 13
Views: 4029
Reputation: 324627
It is possible in ECMAScript 5 implementations, which include recent versions of all major browsers. The ECMAScript 5 spec adds standardized getters and setters. One quirk is that IE 8 has this feature, but only on DOM nodes. This is what the syntax looks like:
var obj = {};
Object.defineProperty(obj, "value", {
get: function () {
return this.val;
},
set: function(val) {
this.val = val;
}
});
There has also been a proprietary implementation of getters and setters in Mozilla for a long time that was also later adopted by WebKit and Opera but this is not available in IE.
Upvotes: 17
Reputation: 83719
I'm not sure what you're asking here. You can always get the value of a textarea without the onchange event. you'd have to get the object then look at the value property.
for example, if your textarea has an id="mytext" you can do
var mytextarea = document.getElementById("mytext");
var text = mytextarea.value;
Upvotes: -2