Prototype
- Parent를 통해 만들어질 Child객체들에게 정보를 전달해주는 연결에 대한 속성 (prototype property)
- Child객체를 만든 Parent객체와 연결된 링크를 알려주는 역할(prototype link)
프로토타입 => 자바스크립트가 **객체지향언어**라는 것에 중요한 역할
_proto_
: 자신이 물려받은 prototype 속성
1. 상속 : 부모객체가 갖고 있는 속성(변수, 메소드)등을 물려받아 새로운 객체를 만들 수 있다.
- 자식 객체
- 부모 객체의 속성을 물려받을 수 있다.
- 자식 객체는 자신만의 새로운 속성을 갖을 수 있다.
자바스크립트의 모든 객체는 자신의 부모 역할을 담당하는 객체와 prototype을 통해 연결되어 있다!
모든 함수의 최상위 객체는 Object이다!!
1 | // Person이라는 생성자 생성 |
생성자 new : 생성자함수를 갖게 된다.
생성자의 역할 : 생성자함수의 프로퍼티를 갖게 해준다.
2. prototyoe Chain
1 | function Grand() {} |
1. prototype chain 과정
- child -> parent -> grand -> Object
객체 song에서 프로퍼티 exist를 찾는다.
없다면 , new Child를 통해 부모가 Child라는 것을 알아낸다.
- 이제, 부모의 속성을 상속받아 부모의 prototype에 접근할 수 있다.
Child.prototype.exist를 찾는다.
없다면, new Parent를 통해 부모가 Parent라는 것을 알아낸다.
- 이제, 부모의 속성을 상속받아 부모의 prototype에 접근할 수 있다.
Parent.prototype.exist를 찾는다.
없다면, new Grand를 통해 부모가 Grand라는 것을 알아낸다.
- 이제, 부모의 속성을 상속받아 부모의 prototype에 접근할 수 있다.
Grand.prototyoe.exist를 찾는다.
- Grand.prototype.exist = true 이므로 true값을 내뱉는다.
- 생성자 함수로 생성된 객체의 프로토타입 체인
!(프로토타입 체인){https://poiemaweb.com/img/constructor_function_prototype_chaining.png}