it 책/코어 자바스크립트

6장 프로토 타입

테오구 2022. 5. 12. 21:54
728x90

어떤 생성자 함수를 new연산자와 함께 출력하면 Constructor에서 정의된 내용을 바탕으로 새로운 인스턴스가 생성되는데 이 인스턴스에는 __proto__라는 Constructor의 prototype프로퍼티를 참조하는 프로퍼티가 자동으로 부여됩니다.

const Person = function(name){
	this._name = name
}
Person.prototype.getName = function(){
	return this._name
}
const suzi = new Person('suzi')
suzi.__proto__._name = 'seung bin'
suzi.__proto__.getName() // 'seung bin'
suzi.getName() // suzi

__proto__는 생략 가능한 속성이라서 인스턴스는 Constructor.prototype의 메서드를 마치 자신의 메서드인 것처럼 호출 할 수 있습니다.

Constructor.prototype에는 constructor라는 프로퍼티가 있는데 이는 다시 생성자 함수 자신을 가르킵니다. 이 프로퍼티는 인스턴스가 자신의 생성자 함수가 무엇인지를 알고자 할 때 필요한 수단입니다.

 

이런식으로 __proto__안에 다시 __proto__를 찾아가는 과정을 프로토타입 체이닝이라고 합니다.

이때 접근 방식은 자신으로부터 가장 가까운 대상부터 점차 먼 대상으로 나아가며 원하는 값을 찾으면 검색을 중단합니다.

console.dir({a:1})

constructor는 생성자 함수인 Object를 가르킵니다.

Object.prototype에는 모든 데이터 타입에서 사용할 수 있는 범용적인 메서드만이 존재하며 객체 전용 메서드는 여느 데이터 타입과 달리 Object 생성자 함수에 static하게 담겨져 있습니다.

728x90

'it 책 > 코어 자바스크립트' 카테고리의 다른 글

7장 클래스  (0) 2022.05.20
5장 클로저  (0) 2022.05.07
3장 this 정리  (0) 2022.05.03
2장 실행 컨텍스트  (0) 2022.05.02
1장 정리  (0) 2022.05.01