TIL_Object.create()

김진경·2020년 3월 25일
0

IM19

목록 보기
9/21

Object.create()는 '복사기'라고 생각하면 쉽다.
아래 그림을 살펴보자

Human(함수)에서 만들어진 Human.prototype(객체)에는 .sleep이라는 메서드가 포함되어 있다. 그런데 이 .sleep이라는 메서드를 Student.prototype(객체)에서 파생된 john이라는 객체가 사용하려고 한다. 그렇다면 어떻게 해야할까?

바로 Human.prototype의 카피본을 Student.prototype에 대입하는 것이다. 이때 Human.prototype의 카피본을 만드는 작업을 Object.create()으로 할 수 있다.

Object.create()
첫번째 인자로 들어가는 prototype 객체를 기반으로 새로운 prototype을 만든다.

다만 Object.create()를 사용할 때 다음과 같은 상황이 발생할 수 있다.

Student.prototype에 Human.prototype의 카피본(Object.create()으로 만든)이 대입되어 생성자 함수(Student)와의 관계가 끊어질 수 있다.

이런 상황을 방지하기 위해선 다음과 같은 과정을 실시해야 한다.

Student.prototype.constructor = Student;
라고 다시 정의를 해주어야 한다.

profile
Maktub.

0개의 댓글