아직은 엉망진창 정리중!
prototype
자바스크립트의 모든 객체는 [[Prototype]]이라는 인터널 슬롯(internal slot)를 가진다. [[Prototype]]의 값은 null 또는 객체이며 상속을 구현하는데 사용된다. [[Prototype]] 객체의 데이터 프로퍼티는 get 액세스를 위해 상속되어 자식 객체의 프로퍼티처럼 사용할 수 있다. 하지만 set 액세스는 허용되지 않는다. 라고 되어있다. [[Prototype]]의 값은 Prototype(프로토타입) 객체이며 __proto__ accessor property로 접근할 수 있다. __proto__ 프로퍼티에 접근하면 내부적으로 Object.getPrototypeOf가 호출되어 프로토타입 객체를 반환한다. student 객체는 __proto__ 프로퍼티로 자신의 부모 객체(프로토타입 객체)인 Object.prototype을 가리키고 있다.
자바스크립트의 모든 객체는 자신의 부모 역할을 담당하는 객체와 연결되어 있다. 그리고 이것은 마치 객체 지향의 상속 개념과 같이 부모 객체의 프로퍼티 또는 메소드를 상속받아 사용할 수 있게 한다. 이러한 부모 객체를 Prototype(프로토타입) 객체 또는 줄여서 Prototype(프로토타입)이라 한다.
Prototype 객체는 생성자 함수에 의해 생성된 각각의 객체에 공유 프로퍼티를 제공하기 위해 사용한다.
프로토타입 객체는 constructor 프로퍼티를 갖는다. 이 constructor 프로퍼티는 객체의 입장에서 자신을 생성한 객체를 가리킨다.
예를 들어 Person() 생성자 함수에 의해 생성된 객체를 foo라 하자. 이 foo 객체를 생성한 객체는 Person() 생성자 함수이다. 이때 foo 객체 입장에서 자신을 생성한 객체는 Person() 생성자 함수이며, foo 객체의 프로토타입 객체는 Person.prototype이다. 따라서 프로토타입 객체 Person.prototype의 constructor 프로퍼티는 Person() 생성자 함수를 가리킨다.
prototype 기반 OOP
개별 인스턴스(객체) 수준에서 메소드와 변수를 추가할 수 있다.
인스턴스 생성은 복사를 통해 이루어진다.
어떤 인스턴스에 없는 속성은 프로토타입 체인을 통해 참조된다.
class
.
https://medium.com/@bluesh55/javascript-prototype-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-f8e67c286b67
https://medium.com/@limsungmook/자바스크립트는-왜-프로토타입을-선택했을까-997f985adb42
'Programming > Computer Science' 카테고리의 다른 글
[리팩토링 개정판] 01. 리팩터링: 첫 번째 예시 (0) | 2023.05.09 |
---|---|
[혼공학습단 9기] 혼.공.컴.운. - 14. 가상 메모리(필수미션 포함) (0) | 2023.02.20 |
[혼공학습단 9기] 혼.공.컴.운. - 13. 교착상태 (0) | 2023.02.20 |
[네트워크] SSL이란? (0) | 2023.02.14 |
[혼공스터디 9기] 혼.공.컴.운. - 12. 프로세스 동기화(필수, 선택 미션 포함) (0) | 2023.02.13 |
댓글