classes
Nous étudions le cas des objets d'une classe.
propriétés
class Car {constructor(model) {
this.model = model;
this.userGears = ['P', 'N', 'R', 'D'];
this.userGear = this.userGears[0];
}
}
let bm = new Car("bm");
Dans l'exemple précédent, on ne peut pas éviter d'écrire une vitesse ici en dehors de P, N, R, D. On peut en effet écrire :
bm.userGear='F';
console.log(bm.userGear) // F
Nous allons voir commet l'utilisation de get et set permet de tester les valeurs.
get et set
class Car {
constructor(model) {
this.model = model;
this._userGears = ['P', 'N', 'R', 'D'];
this._userGear = this._userGears[0];
}
get userGear() { return this._userGear; }
set userGear(value) {
if(this._userGears.indexOf(value) < 0)
// if( !this._userGears.includes(value))
throw new Error(`ATTENTION: ${value} impossible`);
this._userGear = value;
}
shift(gear) { this.userGear = gear; }
}
let bm = new Car("bm");
console.log(bm.userGear='N');
console.log(bm.userGear);
Voyons comment la demande d'une vitesse non autorisée se passe :
console.log(bm.userGear='F');
- "error"
- "Error: ATTENTION: F impossible
at Car.set userGear [as userGear]
Objet littéral
let cart = {_wheels: 4, //inaccessible normalement de l'ext, car inconnue du public
get wheels () {
return this._wheels
},
set wheels (value) {
if (value < this._wheels) {
throw new Error('hey, come back here!')
}
this._wheels = value
}
}
console.log(cart.wheels=5);
console.log(cart.wheels);
console.log(cart.wheels=1);
console.log(cart.wheels);
- 5
- 5
- "error"
- "Error: hey, come back here!
at Object.set wheels [as wheels]