JavaScript中的隐式访问器?

时间:2015-05-26 10:57:19

标签: javascript ecmascript-6 accessor ecmascript-harmony

在ColdFusion(服务器端语言)中,可以让CF为您生成类中的任何getter和setter,如下所示:

component output="false" accessors="true" {

    property string title;

    public any function init() output = false {

        setTitle("");
        return this;

    }

}

在这里,我从不写setTitle() setter,它只是隐含的。

ES5 / ES6 / ES7中是否存在JavaScript(甚至是jQuery)的任何内容?

1 个答案:

答案 0 :(得分:3)

您可以将任意属性分配给任何对象,而无需显式编写setter / getters。

虽然你可以随意使用它们。



function myClass() {}

Object.defineProperty(myClass.prototype, "bar", {
  get: function get_bar() {
    return this._bar;
  },
  set: function set_bar(value) {
    this._bar = value;
    alert(value);
  }
});

var instance = new myClass();
instance.foo = "123"; // Arbitary
instance.bar = "456"; // Explicit setter/getter
console.log(instance.foo, instance.bar);