- 자바스크립트는 다른 객체지향 언어와는 달리 프로토타입 기반의 객체지향 프로그래밍이다.
- 자바스크립트는 클래스가 없으므로 (es6부터 있음) 객체 리터럴이나 생성자 함수로 객체를 생성하는데 생성된 객체의 부모 객체가 바르 프로토타입이다.
- 자바스크립트의 모든 객체는 부모인 프로토타입 객체를 가르키는 참조 링크 형태의 숨겨진 프로퍼티가 있다.(ECMAScript에서는 암묵적 프로토타입 링크로 부르며 [[Prototype]]에 저장됨)
// prototype 프로퍼티와 [[Prototype]] 구분 예제
//Person 생성자 함수
function Person(name) {
this.name = name;
}
//foo 객체 생성
var foo = new Person("foo");
console.dir(Person);
console.dir(foo);자바스크립트에서 객체를 생성하는 건 생성자 함수의 역할이지만, 생성된 객체의 실제 부모 역할을 하는 건 생성자 자신이 아닌 생성자의 prototype 프로퍼티가 가르키는 프로토타입 객체다.