class 中的 getters 和 setter

2019-07-08  本文已影响0人  SingleDiego

想在类的外部访问私有变量我们可以使用 getter 方法,用 get 关键字声明:

const _radius = new WeakMap();

class Circle {
  constructor(radius) {
    // 私有属性
    _radius.set(this, radius);
  }

  get radius() {
    return _radius.get(this);
  }
}

let c = new Circle(1);

演示:

c.radius
// 1

同样的想在外部修改私有变量可以使用 setter 方法,用 set 关键字声明:

const _radius = new WeakMap();

class Circle {
  constructor(radius) {
    // 私有属性
    _radius.set(this, radius);
  }

  get radius() {
    return _radius.get(this);
  }

  set radius(value) {
    if (value <= 0) throw new Error('Invalid radius');
    _radius.set(this, value);
  }
}

let c = new Circle(1);

演示:

c.radius = 2
c.radius
// 2
上一篇下一篇

猜你喜欢

热点阅读