Prototype


객체는 프로토타입이라는 객체에 대한 링크를 갖는다.

객체의 어떤 속성에 접근할 때 객체 자체 속성과 그 프로토타입, 없으면 그의 프로토타입, 또 없으면 그의 프로토타입을 계속 체이닝해서 탐색한다.

function Car(){
}
console.log(Car.prototype);

prototype 객체는 생성자, __proto__ 를 갖고 이를 prototyle Link라고도 한다.

생성자를 통해 생성된 객체는 prototype을 갖지 않는다. 생성자를 갖고 있는 prototype 객체를 가리키는 링크인 __proto__ 만을 가진다.

function Car(){} //prototype : {};
Car.prototype.name = "포르쉐";//Prototype{name:"포르쉐"}:
let audi = new Car();
audi.prototype; //undefined
Car.prototype; // {constructor, __proto__(상위 Object를 가리킴)}

audi.__proto__; // car.prototype을 가리킴 

Q? audi.name을 찍으면 뭐가 나올까?