모던 자바스크립트 Deep Dive - 21장

박상은·2021년 10월 2일
0

요약

1. 표준 빌트인 객체

전역 객체의 프로퍼티로 제공되며, 브라우저환경이나 노드환경 어디서든 사용이 가능하다.
Object, String등의 40여개의 표준 빌트인 객체가 존재하고
Math, Reflect, JSON을 제외하고 모두 생성자 함수로 사용이 가능하다.

const str = new String("str");

Object.getPrototypeOf(str) === String.prototype;	// true

2. 원시값과 래퍼객체

기본적으로 원시값에는 .연산자를 붙일수가 없고 에러가 나는게 맞게 보이지만 에러가 나지않고 정상처리된다.
그 이유는 원시값에 .연산자를 사용하면 자동적으로 래퍼객체로 감싸진후 프로토타입을 상속받기 때문이다.

  • 아래의 예를 들면
  1. 1번에서 원시객체를 생성함
  2. 2번에서 .연산자에 원시객체를 사용하는 것을 보고 원시객체를 String.prototype을 프로토타입으로 가지는 래퍼객체가 임시로 생성된다.
    그리고 .length연산이 끝나고 난 후에 원시값만 남은채로 반환되고 래퍼객체는 가비지컬렉터에 의해 제거된다.
    이 때 래퍼객체는 String기준으로 [[StringData]]내부슬롯에 원시값이 저장된다.
  3. 3번이 undefined가 나오는 이유는 str의 래퍼객체에 name프로퍼티를 넣어두고 문장이 끝난 후 가비지컬렉터에 의해서 제거되기 때문이다.
// 1
const str = "str";

// 2
console.log(str.length);	// 3

// 3
str.name = "a";	
console.log(str.name);	// undefined

3. 전역객체

자바스크립트 엔진에 의해서 가장 먼저 생성되는 객체다.
브라우저와 노드환경에서 모두 globalThis로 사용할 수 있다.
최상위 객체이며, 모든 빌트인 객체들을 가진다. ( 프로토타입체인의 최상위가 아님 )

  • var로 생성한 변수나 함수는 전역객체의 프로퍼티로 생성된다.

3.1 빌트인 전역 프로퍼티와 함수

Infinity, NaN, undefined
eval(), isNaN(), parseFloat(), parseInt(), encodeURI(), decodeURI(), encodeURIComponent(), decodeURIComponent()

0개의 댓글