본문 바로가기

Dev/JavaScript

JavaScript - 자바스크립트의 클래스

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등 예시 애완동물, 강아지, 고양이다. 당연히 자바스크립트도 상속이 지원된다. 하지만 자바스크립트는 명시적으로 인터페이스는 지원하지 않는다고 한다. 

'Dev > JavaScript' 카테고리의 다른 글

Promise 문법 사용하기  (0) 2024.08.09
JavaScript - var, let , const 차이  (0) 2024.06.26
javascript - 객체 정렬  (0) 2024.06.26
JavaScript - 고차함수(map, fill, reduce)  (0) 2024.06.25
JavaScript - 이벤트 핸들러  (0) 2023.12.25