오늘은 모던 JavaScript 튜토리얼에서 프로토타입 상속(https://ko.javascript.info/prototype-inheritance)에 대해서 공부했다. 작성한 질문은 다음과 같다.
자바스크립트에서 객체가 갖는 숨김 프로퍼티를 [[Prototype]]이라고 한다. 이전 변수의 유효 범위와 클로저에서 함수가 갖고 있는 숨김 프로퍼티는 [[Environment]]였는데, 객체도 함수처럼 숨김 프로퍼티를 갖고 있었던 것이었다.
숨김 프로퍼티가 다른 객체를 참조하는 경우 참조 대상을 '프로토타입'이라고 부른다.
객체에서 프로퍼티를 읽으려고 할 때, 해당 프로퍼티가 없으면 자동으로 프로토타입에 프로퍼티가 존재하는지 찾는다.
상속 프로퍼티란 프로토타입으로부터 물려받은 프로퍼티를 상속 프로퍼티라고 부른다.
사실, 프로토타입 상속을 읽기 전에 JavaScript를 공부하며, JavaScript로 코드를 작성할 때 프로토타입이라는 개념을 들어본 적이 없어서 JavaScript에서 별로 중요하지 않은 개념아닐까라는 생각을 했다. 하지만, 내용을 읽어보면서 객체에서 프로퍼티를 읽으려고 할 때, 해당 프로퍼티가 없으면 자동으로 프로토타입에 프로퍼티가 존재하는지 찾는 것과 객체에 프로퍼티가 존재하는지 확인하는 object.hasOwnProperty 메서드도 Object.prototype으로부터 물려받은 상속 프로퍼티였던 것이다. 모던 JavaScript 튜토리얼을 공부할 때, 읽기 전부터 들어본 적 없는 개념이라고 중요하지 않을 거라는 착각을 해선 안되겠다.
'TIL' 카테고리의 다른 글
TIL - 20220724 (0) | 2022.07.24 |
---|---|
TIL - 20220723 (0) | 2022.07.23 |
TIL - 20220721 (0) | 2022.07.21 |
TIL - 20220720 (0) | 2022.07.20 |
TIL - 20220719 (0) | 2022.07.19 |