美文网首页
class 中的 getters 和 setter

class 中的 getters 和 setter

作者: SingleDiego | 来源:发表于2019-07-08 11:34 被阅读0次

    想在类的外部访问私有变量我们可以使用 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
    

    相关文章

      网友评论

          本文标题:class 中的 getters 和 setter

          本文链接:https://www.haomeiwen.com/subject/nownhctx.html