JavaScript OOP에서 메서드와 속성 이름 충돌
속성과 메서드의 이름은 서로 일치해서는 안 되며, 그렇지 않으면 충돌이 발생합니다. 예제를 통해 살펴보겠습니다. 다음과 같은 클래스가 있다고 가정해 보겠습니다.
class User {
name() {
console.log('method');
}
}
이 클래스의 객체를 생성해 보겠습니다.
let user = new User;
메서드를 호출하면, 지금은 작동합니다.
user.name(); // works
이제 같은 이름의 속성에 데이터를 기록하여 메서드의 코드를 덮어씁니다.
user.name = 'str';
user.name(); // error
이러한 충돌을 방지하려면 항상 메서드에는 동사 이름을, 속성에는 명사 이름을 지정하세요.
다음 코드에서 발생한 오류를 수정하세요.
class Employee {
constructor(salary) {
this.salary = salary;
}
salary() {
return this.salary + '
;
}
}