- 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)