- 자바스크립트는 프로토타입 기반 언어
- 클래스 기반 언어 → 상속 사용
- 프로토 타입 기반 언어 → 어떤 객체를 원형으로 삼고 이를 복제(참조)함으로써 상속과 비슷한 효과를 얻게됨
01. 프로토타입의 개념 이해
6-1-1. constructor, prototype, instance
var instance = new Constructor();
- 어떤 생성자 함수를 new 연산자와 함께 호출하면
- Constructor에서 정의된 내용을 바탕으로 새로운 인스턴스가 생성됨
- 이때 instance에는 proto (dunder proto)라는 프로퍼티가 자동으로 부여되는데
- 이 프로퍼티는 Constructor의 prototype이라는 프로퍼티를 참조합니다.
- prototype: 객체
- proto: prototype 참조
- 인스턴스에서도 숨겨진 프로퍼티인 __proto__를 통해 이 메서드들에 접근할 수 있게됨
var Person = function (name) {
this._name = name;
};
Person.prototype.getName = function (){
return this._name;
};
var suzi = new Person('Suzi');
suzi.__proto__.getName(); // undefined
- undefined가 나왔다는 것 → 호출할 수 있는 함수
- this에 바인딩된 대상이 잘못 지정됨.