자바스크립트는 단일상속만 허용하는 언어
객체엔 단 하나의 [[Prototype]]만 있을 수 있고, 클래스는 클래스 하나만 상속받을 수 있음
믹스인은 다른 클래스를 상속받을 필요없이 이들 클래스에 구현되어있는 메서드를 담고 있는 클래스
믹스인은 다른 클래스에 행동을 더해주는 용도로 사용
자바스크립트는 다중상속을 지원하지 않는데 믹스인을 사용하면 메서드를 복사해 프로토타입에 구현할 수 있기 때문에 클래스를 확장하는 용도로 사용 가능
자바스크립트에서 믹스인을 구현할 수 있는 가장 쉬운 방법은 유용한 메서드 여러개가 담긴 객체를 하나 만드는 것
let satHiMixin = {
sayHi() {
alert(`Hello ${this.name}`);
}
}
class User {
constructor(name) {
this.same = name;
}
}
//메서드 복사
Object.assign(User.prototype, sayHiMixin);
new User("Dude").sayHi(); //Hello Dude
클래스 상속과 믹스인에 구현된 추가 메서드 사용도 가능,
믹스인 안에서 믹스인 상속을 사용하는 것도 가능
__proto__
는[[Prototype]]
용 getter, setter
const animal = { eats : true };
const rabbit = { jumps : jumps };
rabbit.__proto__ = animal;
rabbit.eats //true;
rabbit
의 프로토타입은 animal
이다.
rabbit
은 animal
을 상속받는다.