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