실제로 프로토타입은 단 몇 문장으로 요약할 수 있습니다.
모든 프로토타입은 객체이고, 객체에만 프로토타입이 있습니다.
오직 함수에만 프로토타입 속성이 있습니다. 이는 이 함수가 생성될 때 생성된 객체가 상속하는 프로토타입입니다. 생성자로 사용됩니다. 함수의 프로토타입은 프로토타입 속성과 아무 관련이 없습니다.
객체의 프로토타입은 비표준 속성인 __proto__ 또는 ECMAScript5 메서드 Object.getPrototypeOf()를 통해 액세스할 수 있습니다.
1번은 사실 틀렸습니다. 프로토타입 체인의 끝에 있는 객체에는 프로토타입이 없습니다. 하지만 좀 더 간단한 표현을 위해. 프로토타입 체인을 살펴보면 .toString()과 같은 정의되지 않은 메서드가 어떻게 나오는지 이해할 수 있습니다.
위에서 언급한 모호성은 문자 그대로의 이해를 바탕으로 한 것이며, 문법 자체에는 모호함이 없습니다. 프로토타입(Prototype)은 프로토타입을 의미하지만, 객체의 프로토타입은 프로토타입으로 접근할 수 없습니다.
함수에는 프로토타입 속성이 있지만 자체 프로토타입과는 아무런 관련이 없습니다. 이를 이해한 후 프로토타입 체인 및 상속에 대한 기사를 읽어보면 훨씬 더 쉽게 이해할 수 있습니다.
이해를 돕기 위한 몇 가지 예는 다음과 같습니다.