'__proto__'
앞서, 보았던 prototype(부모유전자)는 함수 뒤에만 쓸 수 있습니다.
속성이나 배열 같은 다른 객체에게는 쓸 수 없습니다.
하지만, '__proto__'는 모든 객체가 가지고 있는 속성이기 때문에 함수가 아닌 일반객체에서도 부모와의 상속관계를 표현할 수 있습니다.
즉 '__proto__'는 모든 객체에서 부모의 유전자를 검사할때 쓰는 속성입니다.
function 기계(){
this.name = 'Kim';
this.age = 15;
}
var 학생1 = new 기계();
console.log(학생1.__proto__); === console.log(기계.prototype);
자식.__proto__ 는 부모. prototype을 의미한다.
'__proto__'를 등록한다면?
'자식.__proto__는 부모.prototype을 의미한다 '라고 했습니다.
그럼 어떤 object에다가 __proto__를 강제로 하나 설정해버리면 어떻게 될까요?
헉 부모가 생겨버립니다
var 부모 = { name : 'Kim' };
var 자식 = {};
자식.__proto__ = 부모; //부모를 등록시켜버림
console.log(자식.name);
//'Kim'
상속을 이렇게도 할 수 있습니다
prototype 과 '__proto__' 차이점 정리
prototype
1. 함수 객체만 가지고 있다
2. 형태: 기계.prototype.gender = '남' // 기계의 부모유전자에 gender 속성 등록
'__proto__'
1. 모든 객체가 가지고 있다
2. 형태: 자식.__proto__ = 부모; // 부모를 등록시켜버림
'Javascript' 카테고리의 다른 글
비동기처리와 순차적으로 실행해주는 콜백함수 (0) | 2023.03.16 |
---|---|
Beesbeesbees 과제풀이 (2) | 2023.03.16 |
prototype (= 부모유전자, 물려받아 쓸 수 있음) (0) | 2023.03.15 |
OOP 4가지 개념 (0) | 2023.03.15 |
객체지향 프로그래밍: 클래스와 인스턴스 (0) | 2023.03.15 |