JS_prototype_0

dev.dave·2023년 7월 29일

Javascript

목록 보기
93/167

여기서 보면,

Person 함수(생성자함수)를 생성할때 순서는,

먼저 오브젝트 프로토타입의 참조를 받아

Person 프로토타입객체가 만들어지고,
그다음
Person 프로토타입객체를 바탕으로
Person 함수객체(생성자함수)가 만들어진다.

그리고

저기 kim은
new 해서 만든건데

그러면 kim은 Person 프로토타입객체를 바탕으로 만들어진거다.

그리고

모든 객체는 proto 가 있는데, 이거는 상위객체의 정보가 담겨있으며, 상위객체를 참조한다는 뜻이다. 링크역활을한다.
그래서 상위 객체의 값을 가지고올경우 ,
proto 가 체인 역할을 하기떄문에 가능한 것이다.

proto 에 담겨진 정보는 뭐가있냐면,
함수 프로퍼티, 함수 프로토타입 프로퍼티 이렇게 담겨져있다.

함수 프로퍼티는 뭐냐면,
저 Person함수 생성할때 그 함수 안에다 작성한 프로퍼티 값이고,

함수프로토타입 프로퍼티는
저 Person함수 생성할때 그 저 함수프로토타입객체 안에다 작성한 프로퍼티 값이다.

물런 함수 프로퍼티나 함수프로토타입프로퍼티나 다 기본적으로 값을 추가 삭제 할수있다.

그리고

함수프로토타입에는

컨스트럭쳐가 있는데,
이거는
일단
new를 하게 할수있는 게 이 컨스트럭쳐가 있기때문에 할수있는거다.
함수(함수의프로토타입)만 컨스트럭쳐를 가지고있다.

그리고

컨스트럭쳐는 자기 자신의 함수의 내용을 담고있다.
컨스트럭쳐 내용 보면,

그냥 함수에 정의된 프로퍼티값이 나온다.
(프로토타입값은 안뜬다.)

그래서

컨스트럭쳐가
그 함수를의 내용을 담고있기때문에

new 를해서

새로운 객체를 생성하면,
이제 함수의 내용이 다 복사가 되는거다.

그리고
new한 새로운객체는
물려받은 함수 값을 쓸수있고,
그리고
함수프로토타입을 가르키기 때문에 함수프로토타입에 등록된 프로퍼티도 갖다 쓸수있다.

  • 컨스트럭쳐는 함수의 프로토타입 안에 들어있는 변수(기능)다.

  • 즉, 프로토타입에서 컨스트럭쳐가 실행이된다.

  • 그 컨스트럭쳐는 함수의 내용을 담고있다.

  • 즉, 함수에 컨스트럭쳐가 들어있는게 아니라는뜻이다.
    그니까 각각 따로 하는 역할이 있고 서로 이어져있을 뿐이다.

  • 그래서, 함수는 프로토타입에 접급하려면

  • prototype 키워드로 접근하면되고,

  • 프로토타입이 함수에게 접근하려면 constructor 로 접근하면된다.

서로를 참조하는 레퍼런스 변수를 통해 두 객체는 접근 뿐만 아니라 변경도 가능합니다.

new 를 통해 새로운객체가 나오면
그 객체는
일단
그 상위 함수에 연결된게 아니고,
그 상위함수의 프로토타입에 연결이 된것이다.

근데

그 새로운 객체는 함수에게 접근할수있고,
프로토타입에게도 접근할수있다.

profile
🔥개인 메모 / 다른블로그 자료 참조 / 다른블로그 자료 퍼옴 (출처표기) /여기저기서 공부 했던 내용 개인메모 & 참고 / 개인 기록 용도 블로그 입니다.🔥

0개의 댓글