전역 객체의 프로퍼티로 제공되며, 브라우저환경이나 노드환경 어디서든 사용이 가능하다.
Object
, String
등의 40여개의 표준 빌트인 객체가 존재하고
Math
, Reflect
, JSON
을 제외하고 모두 생성자 함수로 사용이 가능하다.
const str = new String("str");
Object.getPrototypeOf(str) === String.prototype; // true
기본적으로 원시값에는 .
연산자를 붙일수가 없고 에러가 나는게 맞게 보이지만 에러가 나지않고 정상처리된다.
그 이유는 원시값에 .
연산자를 사용하면 자동적으로 래퍼객체로 감싸진후 프로토타입을 상속받기 때문이다.
.
연산자에 원시객체를 사용하는 것을 보고 원시객체를 String.prototype
을 프로토타입으로 가지는 래퍼객체가 임시로 생성된다..length
연산이 끝나고 난 후에 원시값만 남은채로 반환되고 래퍼객체는 가비지컬렉터에 의해 제거된다.String
기준으로 [[StringData]]
내부슬롯에 원시값이 저장된다.undefined
가 나오는 이유는 str
의 래퍼객체에 name
프로퍼티를 넣어두고 문장이 끝난 후 가비지컬렉터에 의해서 제거되기 때문이다.// 1
const str = "str";
// 2
console.log(str.length); // 3
// 3
str.name = "a";
console.log(str.name); // undefined
자바스크립트 엔진에 의해서 가장 먼저 생성되는 객체다.
브라우저와 노드환경에서 모두 globalThis
로 사용할 수 있다.
최상위 객체이며, 모든 빌트인 객체들을 가진다. ( 프로토타입체인의 최상위가 아님 )
var
로 생성한 변수나 함수는 전역객체의 프로퍼티로 생성된다.Infinity
, NaN
, undefined
eval()
, isNaN()
, parseFloat()
, parseInt()
, encodeURI()
, decodeURI()
, encodeURIComponent()
, decodeURIComponent()