• ES6에서 객체지향 프로그래밍: class, extends, super 키워드 사용

기존의 ES5에서 복잡하게 구현되었던 객체지향 프로그래밍이 ES6에서 class, extends, 그리고 super 키워드가 사용됨으로써 간략하게 구현되었습니다.
함수적 정의로 표현되었던 객체가 class라는 키워드로 선언되었고, 부모 클래스와의 관계 또한 extends라는 키워드로 super class로 부터 상속되었음을 명시할 수 있게 되었습니다.
뿐만아니라 super 키워드를 통해 간단하게 부모 클래스의 생성자나 메소드 함수를 호출 및 실행할 수 있게 되었고, 이는 손쉽게 '다형성'을 구현할 수 있게 해줍니다.

class Human {
  constructor(name) {
    this.name = name;
  }
  sleep() {
    console.log('zzz');
  }
}

class Student extends Human {
  /* 부모 클래스의 constructor와 일치하면 생략 가능 */
  // constructor(name) {
  //   super(name);
  // }
  learn() {
    console.log('learning'); 
  }
  // 다형성 구현
  sleep() {
    super.sleep();
    console.log('do not sleep');
  }
}

var steve = new Human('steve');
steve.sleep(); // 'zzz'
steve instanceof Human; // true
steve.__proto__ === Human.prototype; // true
steve.learn(); // TypeError
steve instanceof Student; // false
steve.__proto__ === Student.prototype; // false

var john = new Student('john');
john.sleep(); // 'zzz' 'do not sleep'
john.learn(); // 'learning'
john instanceof Human; // true
john instanceof Student; // true
john.__proto__ === Student.prototype; // true
john.__proto__ === Human.prototype; // false

코드 출처: 코드스테이츠(CodeStates)

0개의 댓글