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

1-blue·2021년 10월 2일

요약

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()

profile
블로그 이전했습니다 !! ( https://blog.story-dict.com )

0개의 댓글