반응형
(1) 기본 패턴
기본 패턴: 생성자의 정의를 안해서 문제
kid.say를 하면 Adam이 나옴
(2) 생성자 빌려쓰기
생성자 빌려쓰기: 프로토타입 연결이 안됨
function Child(name) {
Parent.apply(this, arguments)
}
class Child extends Parent {
constructor() {
super();
}
} // 와 유사
// kid.say를 못함
(3) 생성자 빌려쓰고 프로토타입 지정
생성자 빌려쓰고 프로토타입 지정: 괜찮지만 Parent 너무 많이 호출
function Child(name) {
Parent.apply(this.arguments);
}
Child.prototype = new Parent();
부모가 계속 new가 됨
(4) 프로토타입 공유
프로토타입 공유: 단점은 자식이나 손자뻘 객체가 프로토타입을 수정할 경우, 모든 부모와 손자뻘의 객체가 영향을 받음
function inherit(C, P) {
C.prototype = P.prototype;
}
(5) 임시 생성자
function inherit(C, P) {
var F = function() { }
F.prototype = P.prototype;
C.prototype = new F();
C.prototype.constructor = C; // 원하는 생성자 함수를 가리키도록 재설정
}
반응형
'JavaScript > JS 초급&개념' 카테고리의 다른 글
[JS] if, else를 표현하는 세 가지 방법: 삼항연산자, 논리 연산자 && || (0) | 2023.07.03 |
---|---|
[JS] 자바스크립트 ==와 === 비교연산자, null과 undefined (0) | 2023.07.03 |
[JS] 6장-2. 함수 호출 (1) | 2023.06.13 |
[JS] 6장-1. 함수와 프로토타입 (0) | 2023.06.13 |
[JS] 5장. 자바스크립트의 메모리 관리 (0) | 2023.06.13 |