프로토타입 상속
null 및 undefined를 제외하고 각 기본 데이터 유형에는 값으로 작업하는 메서드를 제공하는 상응하는 객체 래퍼인 프로토타입이 있습니다. 원시에서 메서드 또는 속성 조회가 호출되면 JavaScript는 백그라운드에서 원시를 래핑하고 대신 래퍼 객체에서 메서드를 호출하거나 속성 조회를 실행합니다.
예를 들어 문자열 리터럴에는 자체 메서드가 없지만 상응하는 String 객체 래퍼 덕분에 .toUpperCase() 메서드를 호출할 수 있습니다.
"this is a string literal".toUpperCase();
> THIS IS A STRING LITERAL
이를 프로토타입 상속이라고 합니다. 값의 상응하는 생성자에서 속성과 메서드를 상속합니다.
Number.prototype
> Number { 0 }
> constructor: function Number()
> toExponential: function toExponential()
> toFixed: function toFixed()
> toLocaleString: function toLocaleString()
> toPrecision: function toPrecision()
> toString: function toString()
> valueOf: function valueOf()
> <prototype>: Object { … }
값으로 정의하는 대신 이러한 생성자를 사용하여 프리미티브를 만들 수 있습니다. 예를 들어 String 생성자를 사용하면 문자열 리터럴이 아닌 문자열 객체가 생성됩니다. 문자열 값뿐만 아니라 생성자의 모든 상속된 속성과 메서드를 포함하는 객체입니다.