프로토타입

프로토타입의 구조

// 그림 추가

이를 코드로 바꾸면 다음과 같다.

var instance = new Contructor();

위 코드의 동작 과정은 다음과 같다.

  1. 어떤 생성자 함수(Constructor)를 new 연산자와 함께 호출하면
  2. Constructor에서 정의된 내용을 바탕으로 새로운 인스턴스가 생성된다.
  3. 이떄 instance에는 proto 라는 프로퍼티가 자동으로 부여되는데,
  4. 이 프로퍼티는 Constructor의 prototype이라는 프로퍼티를 참조한다.

<aside> 💡 prototype은 객체이다. 이를 참조하는 proto 또한 객체다.

</aside>

prototype 객체 내부에는 인스턴스가 사용할 메서드를 저장한다. 그러면 인스턴스에서도 숨겨진 프로퍼티인 proto 를 통해 이 메서드들에 접근할 수 있게 된다.

proto

예시

var Person = function (name) {
	this._name = name;
};

Person.prototype.getName = function() {
	return this._name;
};

var suzi = new Person("Suzi");
suzie.__proto__.getName(); // undefined

이제 Person의 인스턴스는 proto 프로퍼티를 통해 getName을 호출할 수 있다.