创建像C#属性的javascript属性

时间:2010-07-08 22:48:27

标签: c# javascript

是否可以在javascript对象上创建一个与C#中的属性类似的属性。

实施例: 我使用dojo创建了一个自动调整大小的textarea小部件。为了从我的小部件中获取“value”属性,我已经连接到onchange事件,并且每次textarea的值发生变化时我都会设置一个变量。

有没有办法在不挂钩onchange事件的情况下完成此任务。

修改

换句话说,是否可以在JavaScript中写一些行为类似于getter和/或setter的内容。

2 个答案:

答案 0 :(得分:15)

ECMAScript 5实现中可能包含recent versions of all major browsers。 ECMAScript 5规范增加了标准化的getter和setter。一个怪癖是IE 8具有此功能,但仅限于DOM节点。这就是语法:

var obj = {};

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

在Mozilla中已经有很长时间的getter和setter的专有实现,后来也被WebKit和Opera采用,但这在IE中不可用。

答案 1 :(得分:-1)

我不确定你在这里问的是什么。您始终可以在没有onchange事件的情况下获取textarea的值。你必须得到对象,然后看看value属性。

例如,如果你的textarea有一个id =“mytext”你可以做

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