class MyNumber {
constructor( value ) {
this.value = value;
}
get sqrt() {
return Math.sqrt( this.value );
}
}
const myNumber = new MyNumber( 4 );
console.log( myNumber.sqrt );
// lub
const myNumber2 = {
value: 9,
get sqrt() {
return Math.sqrt( this.value );
}
};
console.log( myNumber2.sqrt );
Co do setterów: pozwalają np. przeprowadzać walidację zanim przypiszą własności wartość
class MyNumber {
constructor( value ) {
this.value = value;
}
get value() {
return this._value;
}
set value( value ) {
if ( typeof value !== 'number' ) {
throw new TypeError( `Value must be a number, ${ typeof value } provided.` );
}
this._value = value;
}
}
const myNumber = new MyNumber( 4 );
myNumber.value = 9; // OK
myNumber.value = 'a'; // TypeError