prototype은 오직 constructor 함수가 만들어질 때 자동으로 생성됩니다.__proto__를 가지고 있습니다.__proto__는 해당 객체의 부모, 즉 constructor의 prototype을 가리킵니다.function 기계() {
this.name = 'Kim';
this.age = 15;
}
var 학생1 = new 기계();
console.log(학생1.__proto__); // 학생1의 부모 prototype 출력
console.log(기계.prototype); // 기계 함수의 prototype 출력
__proto__가 부모의 prototype을 의미함을 보여줍니다.__proto__는 마치 "부모 유전자"처럼 자신의 부모가 누구인지 알려주는 역할을 합니다.__proto__를 직접 할당하면, 해당 객체는 새로운 부모 객체(프로토타입)를 갖게 됩니다.var 부모 = { name: 'Kim' };
var 자식 = {};
// 자식의 부모를 직접 지정
자식.__proto__ = 부모;
console.log(자식.name); // 출력: 'Kim'
부모 객체를 자식.__proto__에 할당함으로써, 자식 객체는 부모 객체의 속성(예, name)에 접근할 수 있게 됩니다.__proto__ 정보도 같이 확인할 수 있습니다.
function 기계() {
this.name = 'Kim';
this.age = 15;
}
// prototype에 속성 추가
기계.prototype.gender = '남';
var 학생1 = new 기계();
console.log(학생1);
name, age 등의 인스턴스 속성뿐 아니라, __proto__를 통해 연결된 기계.prototype의 내용도 확인할 수 있습니다.기계.prototype.__proto__를 조회하면, 이는 Object.prototype을 가리킵니다.Object.prototype입니다.Object의 하위 타입임을 알 수 있습니다.__proto__를 설정하여 객체 간 상속 관계를 만들 수 있습니다.__proto__를 통해 상속 계층(부모, 부모의 부모 등)을 확인할 수 있으며, 모든 객체의 최상위 조상은 Object.prototype입니다.