Getter et Setter d'une classe

La syntaxe set permet de lier une propriété d'un objet à une fonction qui sera appelée à chaque tentative de modification de cette propriété.

Exemple : 

class CodeSecret {

  constructor(num) {
    // invokes the setter
    this.code = num;

  }

  set code(num) {
   
    if ( !/^ISBN/.test(num)) {
      console.log("votre code doit commencer par ISBN");
      return;
    }
    this._code = num;

  }


  get code() {
    return this._code;
  }

}

let t = new CodeSecret("dD1");

https://es6console.com/jpbn7x38/


class Point {

    constructor(x, y) {
        Object.assign(this, { x, y });
    }

    set x(val) {
        console.log("dans set x");
        try {
            if (val < 0) {
                throw "la valeur de x ne doit pas être négative";
            }
            this._x = val;
            this._pos = { x: this._x, y: this._y }
        }
        catch (e) {
            console.log(e);
        }
    }

    get x() {
        return this._x;
    }

    set y(val) {
        console.log("dans set y");
        try {
            if (val < 0) {
                throw "la valeur de y ne doit pas être négative";
            }
            this._y = val;
            this._pos = { x: this._x, y: this._y }
        }
        catch (e) {
            console.log(e);
        }
    }

    get y() {
        return this._y;
    }

    set pos({ x = this._x, y = this._y }) {
        console.log("dans set pos");
        this.x = x; // permet de passer par set x qui verifie que x < 10
        this.y = y;
    }

    get pos() {
        return this._pos;
    }

    toString() {
        return `${this.x}, ${this.y} : pos(${this.pos.x},${this.pos.y})`
    }
}

let p = new Point(2, 2);
p.pos = { x: -10, y: 0 };
console.log(p.toString());
p.pos = { y: 2 };
console.log(p.toString());


https://es6console.com/jpa4ktbu/