생성자는 기본적으로 함수이다. 우리가 함수를 호출할 때 new를 붙이면 new로 인해 그 함수는 생성자가 된다.
function Ultra(){}
Ultra.prototype.ultraProp = true;
function Super(){}
Super.prototype = new Ultra();
funciton Sub(){}
Sub.prototype = new Super();
var a = new Sub(); // new로 생성한 함수가 a에 객체가 된다.
이때 단순히 {} 로를 줌으로 객체를 넣어주지 않는이유는 비어있는 데이터가 아닌 로직으로 연결되어 있는 데이터가
필요하기 때문이다. 그렇다면 new Sub(); 원형 데이터는 어디에 있을까.
바로 Sub.prototype 이다. (prototype이라는 프로포티)
마찬가지로 new Super는 Super.prototyper 을, new Ultrea는 Ultra.prototype을 받는다.
이러한 개념을 프로토타입 체인이라 할 수 있다. 프로토타입이 프로토타입으로 연결되어있는 형태를 말한다.