Неявные средства доступа в JavaScript?

В ColdFusion (язык на стороне сервера) CF может генерировать любые методы получения и установки в классе для вас, например, так:

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

    property string title;

    public any function init() output = false {

        setTitle("");
        return this;

    }

}

Здесь я никогда не пишу setTitle() сеттер, это просто неявно.

Есть ли такая вещь для JavaScript (или даже jQuery) в ES5 / ES6 / ES7?

1 ответ

Решение

Вы можете назначить произвольные свойства любому объекту без явного написания методов установки / получения.

Хотя вы можете использовать их, если хотите.

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);

Другие вопросы по тегам