자바스크립트는 프로토타입 기반 언어. 클래스 언어는 상속을 사용하지만 프로토타입 기반은 어떤 객체를 원형으로 삼고 이를 복제(참조)한다.
let instance = new Constructor
프로토타입의 핵심 내용
어떤 생성자 함수를 new 연사자와 함께 호출하면 Constructor에서 정의된 내용을 바탕으로 새로운 instance가 생성된다.
이때 instance에 __proto__
라는 프로퍼티가 자동으로 부여되는데, 이때 __proto__
는 Constructor의 prototype이라는 프로퍼티를 참조한다.
instance가 __proto__
를 통해서 protoype 객체 내부의 메서드에 접근이 가능한 것
예제
const Person = function (name) {
this.name = name;
};
Person.prototype.getName = function () {
return this.name;
};
const dongha = new Person('Dongha');
dongha.__proto__.getName(); // undefined
Person.prototype === dongha.__proto__ // true
__proto__
통해서 getName을 호출할 수 있다. dongha.__proto__.getName();
에서 getName 내부의 this는dongha.__proto__
를 가리킴. const dongha = new Person('Dongha');
dongha.getName() // dongha
__proto__
는 생략 가능항다. __proto__
객체 내부에도 마찬가지.