JavaScriptにおけるOOPのメソッドとプロパティの名前衝突
プロパティとメソッドの名前が 一致してはいけません。これは衝突を引き起こします。 例を見てみましょう。 次のクラスがあるとします:
class User {
name() {
console.log('method');
}
}
このクラスのオブジェクトを作成します:
let user = new User;
メソッドを呼び出してみると、 今のところは動作します:
user.name(); // 動作する
では、同じ名前のプロパティにデータを書き込み、 それによってメソッドのコードを 上書きしてみます:
user.name = 'str';
user.name(); // エラー
このような衝突を避けるためには、 メソッドには動詞の名前を、 プロパティには名詞の名前を 常に付けるようにしてください。
次のコードで行われている 誤りを修正してください:
class Employee {
constructor(salary) {
this.salary = salary;
}
salary() {
return this.salary + '円';
}
}