代码之家  ›  专栏  ›  技术社区  ›  Seattle Leonard

创建类似于C#属性的javascript属性

  •  11
  • Seattle Leonard  · 技术社区  · 14 年前

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

    有没有一种方法可以在不连接onchange事件的情况下实现这一点。

    换句话说,是否可以用JavaScript编写类似getter和/或setter的东西。

    2 回复  |  直到 14 年前
        1
  •  15
  •   Tim Down    12 年前

    这在ECMAScript 5实现中是可能的,包括 recent versions of all major browsers

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

    Mozilla中也有一个getter和setter的专有实现,这在很长一段时间内也被WebKit和Opera采用,但这在IE中是不可用的。

        2
  •  -2
  •   John Boker    14 年前

    我不知道你在问什么。您总是可以在没有onchange事件的情况下获取textarea的值。您必须先获取对象,然后查看value属性。

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

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