개발/JavaScript
JavaScript - 자바스크립트의 클래스
홀든콜필드
2024. 6. 26. 18:26
728x90
자바스크립트는 특이하다.. 클래스를 구성하는데 클래스의 구성원들을 컨스트럭터(생성자)에서 결정한다.
class Korean {
constructor(name, age) {
this.name = name;
this.age = age;
this.country = 'Korea';
}
addAge(age) {
return this.age + age;
}
}
그리고 자바스크립트 답게 메소드의 형식은 지정할 필요가 없고 private public 이 없다. 기본적으로 모두 public 이다.
하지만 함수 앞에 #을 붙이면 프라이빗을 정의된다.
메소드 이름 앞에 #이라니 조금 생소하다..!!
class Pet {
constructor(name, age) {
console.log('IN PET CONSTRUCTOR!')
this.name = name;
this.age = age;
}
eat() {
return `${this.name} is eating!`
}
}
class Cat extends Pet {
constructor(name, age, livesLeft = 9) {
console.log('IN CAT CONSTRUCTOR!')
super(name, age)
this.livesLeft = livesLeft;
}
meow() {
return 'MEOWWWW'
}
}
const monty = new Cat('monty',9);
// IN CAT CONSTRUCTOR!
// IN PET CONSTRUCTOR!
console.log(monty); // Cat {name: 'monty', age: 9, livesLeft: 9}
상속의 1등 예시 애완동물, 강아지, 고양이다. 당연히 자바스크립트도 상속이 지원된다. 하지만 자바스크립트는 명시적으로 인터페이스는 지원하지 않는다고 한다.