JavaScriptにおけるOOPのセッターとゲッターの利点
前のレッスンでは、それぞれのプロパティに対してゲッターとセッターを作成しました。 なぜそのような複雑さが必要なのか、実際にはプロパティをプライベートではなくパブリックにすれば同じ効果が得られるのではないか、という疑問が生じるかもしれません。
問題は、ゲッターとセッターには利点があることです:プロパティにアクセスする前に、いくつかのチェックを実行することができます。 たとえば、私たちの場合、名前と姓を書き込むときに、新しい値が空の文字列ではないことを確認できます:
class User {
#name;
#surn;
setName(name) {
if (name.length > 0) {
this.#name = name;
} else {
throw new Error('名前が正しくありません');
}
}
setSurn(surn) {
if (surn.length > 0) {
this.#surn = surn;
} else {
throw new Error('姓が正しくありません');
}
}
getName() {
return this.#name;
}
getSurn() {
return this.#surn;
}
}
これがどのように機能するか確認してみましょう。 まず、クラスのオブジェクトを作成します:
let user = new User;
次に、正しい値を書き込んでみます:
user.setName('john');
そして今度は、正しくない値を書き込んでみます:
user.setName(''); // エラー
Employee クラスの年齢セッターで、
年齢が 0 から 120 の間でなければならないというチェックを行ってください。
Employee クラスの給与ゲッターで、
給与を読み取るときに、その値の最後にドル記号が追加されるようにしてください。