19장 프로토타입
추상화
다양한 속성중에서 프로그램에 필요한 속성을 간추려 표현하는 것
객체
- 속성을 통해 여러개의 값을 하나의 단위로 표현한 복잡적인 자료구조
- 상태를 나타내는 데이터와 상태 데이터를 조작할 수 있는 동작으로 묶은 복합적인 자료구조
상속
어떤 객체 프로퍼티 또는 메서드를 다른 객체가 받아서 사용하는것.
프로토타입
- 어떤 객체의 상위 객체의 역할을 하는 개체로써, 다른 객체에 공유 프로퍼티를 제공한다. 프로토타입을 상속받은 하위 객체는 상위 객체의 프로퍼티를 사용할 수 있다.
- 모든 객체는 [[Prototype]] 이라는 내부슬롯을 가지며, 객체생성 방식에 따라 프로토타입이 결정되고, 슬롯에 저장된다
- 모든 객체는 하나의 프로토타입을 가진다. 모든 프로토타입은 생성자 함수와 연결되어 있다. 즉, 객체의 프로토타입과 생성자 함수는 서로 연결되어 있다.
_ Proto _ 접근자 프로퍼티
- 접근자 프로퍼티이다 => 접근자 프로퍼티는 값을 갖지 않고, 값을 읽거나 저장할 때 사용한다.
- 상속을 통해 사용된다
- 프로토타입에 접근 하는이유 => 상호참조에 의해 프로토타입 체인이 생성되는 것을 방지
- 코드내에서 직접사용을 권장하지 않음.
함수객체의 Prototype 프로퍼티
함수 객체만이 소유하는 Prototype 프로퍼티는 생성자 함수가 생성할 인스턴스의 프로토타입을 가르킨다.
프로토 타입 생성시점
- 사용자 정의 생성자 함수 => 함수 정의가 평가 되어 함수 객체를 생성하는 시점
- 빌트인 생성자 함수 => 전역객체가 생성 되는 시점
프로토 타입 체인
- 객체의 프로퍼티에 접근시, 없다면 [[Prototype]] 내부슬롯을 따라, 자신의 부모역할을 하는 프로토타입을 순차적으로 검색한다.
- 프로토 타입의 종점은 Object.prototype이며, 내부슬롯의 값은 null이다.
- 프로토 타입 체인은 상속 프로퍼티 검색을 위한 메커니즘이다. *** 스코프체인 : 식별자 검색
ex). me.hasOwnProperty('name') => me: 식별자 , hasOwnProperty: 스코프체인 검색
오버라이딩
상위 클래스가 가지고 있는 메서드를 하위클래스가 재정의 하여 사용하는 것
오버로딩
같은 이름의 함수, 매개변수나 매개변수의 타입이 다른것
Instanceof
객체의 프로토타입 체인상에 존재하면 True 반환.