whatisthis?
javaScript. prototype / __proto__ / constructor 본문
prototype, __proto__와 constructor의 관계
prototype과 constructor는 부모자식 관계라고 생각하면 된다.
Person.prototype.constructor === Person; 이고,
Person.prototype === (Person생성자로 만들어진 객체).__proto__; 이기 때문에
(Person생성자로 만들어진 객체).__proto__.constructor === Person; 도 성립하게 된다.
모든 객체는 [[Prototype]]이라는 내부 슬롯(자바스크립트 엔진의 내부 로직)을 갖으며,
상속을 구현하는 프로토타입 객체를 가리킨다.
[[Prototype]] 내부 슬롯에는 직접 접근이 불가하다.
이는 프로토타입 체인의 단방향을 지키기 위해서다.
(만약 직접 접근가능하다면, 서로가 서로의 프로토타입이 되면서 프로토타입 체인이 무한으로 돈다.)
따라서 __proto__ 프로퍼티로만 접근할 수 있다.
모든 객체는 __proto__를 통해 자신의 프로토타입([[Prototype]] 내부 슬롯)에 접근할 수 있다.
prototype 프로퍼티는 생성자함수로 호출할 수 있는 객체.
즉, constructor을 소유하는 프로퍼티.
>> 일반객체와 생성자로 호출할 수 없는 일반객체는 prototype 프로퍼티가 없다.
function func() {}
func.hasOwnProperty('prototype'); // true
const obj= {}
func.hasOwnProperty('prototype'); // false
즉, [[prototype]] 내부 슬롯 = 프로토타입.
__proto__ = 프로토타입에 접근할 수단.
REFERENCE
- https://www.howdy-mj.me/javascript/prototype-and-proto/
- https://www.zerocho.com/category/JavaScript/post/573c2acf91575c17008ad2fc
'WEB STUDY > JAVASCRIPT' 카테고리의 다른 글
javaScript. (16) Object 객체 (0) | 2022.01.28 |
---|---|
javaScript. (15) 객체 상속 (0) | 2022.01.27 |
javaScript. (14) 객체지향 프로그래밍 ㅡ 생성자와 프로토타입 (0) | 2022.01.27 |
javaScript. (13) Date / RegExp 객체 (0) | 2022.01.27 |
javaScript. (12) DOM(Document Object Model) (0) | 2022.01.24 |