코딩을 쉽게 해보자

[Deep Dive] 21장 - 빌트인 객체 본문

JavaScript

[Deep Dive] 21장 - 빌트인 객체

꿀단지코딩 2022. 11. 18. 17:47

1. 자바스크립트 객체의 분류

표준 빌트인 객체(standard built-in objects / native objects / global objects)

자바스크립트 실행 환경(브라우저 또는 Node.js 환경)과 관계없이 언제나 사용할 수 있다.

 

호스트 객체(host objects)

자바스크립트 실행 환경에서 추가로 제공하는 객체

브라우저 환경에서는 DOM, BOM, Canvas, XMLHttpRequest, fetch, requestAnimationFrame, SVG, Web Storage, Web Component, Web Worker와 같은 클라이언트 사이드 Web API를,

Node.js 환경에서는 Node.js의 API를 제공한다.

 

사용자 정의 객체(user-defined objects)

표준 빌트인 객체와 호스트 객체처럼 기본 제공되는 객체가 아닌 사용자가 직접 정의한 객체

 

2. 표준 빌트인 객체

Math, Reflect, JSON을 제외한 표준 빌트인 객체는 모두 인스턴스를 생성할 수 있는 생성자 함수 객체다.

생성자 함수 객체인 표준 빌트인 객체는 프로토타입 메서드와 정적 메서드를 제공

아닌 객체는 정적 메서드만 제공

 

3. 원시값과 래퍼 객체

문자열, 숫자, 불리언 객체를 생성하는 표준 빌트인 생성자 함수가 존재하는 이유?

 

원시값은 객체가 아니므로 프로퍼티나 메서드를 가질 수 없는데, 원시값인 문자열이 마치 객체처럼 동작한다.

마침표 표기법(or 대괄호 표기법)으로 접근하면 JS 엔진이 일시적으로 원시값을 연관된 객체로 변환해 주기 때문이다.

 

이처럼 문자열, 숫자, 불리언 값에 대해 객체처럼 접근하면 생성되는 임시 객체를 래퍼 객체(wrapper object)라 한다.

 

String, Number, Boolean 생성자 함수를 new 연산자와 함께 호출하여 인스턴스를 생성할 필요가 없으며 권장하지도 않는다.

 

4. 전역 객체

전역 객체(global object)는 코드가 실행되기 이전 단계에 JS 엔진에 의해 어떤 객체보다도 먼저 생성되는 특수한 객체,

어떤 객체에도 속하지 않은 최상위 객체

브라우저 환경에서는 window(또는 self, this, frames)

Node.js환경에서는 global

 

전역 객체는 표준 빌트인 객체를 프로퍼티를 가지고 있다.

var 키우ㅝ드로 선언한 전역 변수, 선언하지 않은 변수에 값을 할당한 암묵적 전역, 전역 함수는 전역 객체의 프로퍼티다.

let과 const로 선언한 전역 변수는 전역 객체의 프로퍼티가 아니다.

 

전역 객체의 프로퍼티와 메서드는 window나 global을 생략하여 참조/호출할 수 있으므로 전역 변수와 전역 함수처럼 사용할 수 있다.

1. 빌트인 전역 프로퍼티

Infinity

NaN

undefined

 

2. 빌트인 전역 함수

eval

- eval 함수는 기존의 스코프를 런타임에 동적으로 수정한다.

- 최적화 수행 X 일반적인 코드 실행에 비해 처리 속도가 느리다.

- eval 함수의 사용은 금지해야 한다.

isFinite

isNaN

parseFloat

parseInt

- 두 번째 인수로 진법을 나타내는 기수(2~36)를 전달할 수 있다.

encodeURI / decodeURI

- encodeURI 함수는 완전한 URI를 문자열로 전달받아 이스케이프 처리를 위해 인코딩한다.

- decodeURI 함수는 인코딩된 URI를 인수로 전달받아 이스케이프 처리 이전으로 디코딩한다.

encodeURIComponent / decodeURIComponent

- encodeURIComponent 함수는 URI 구성 요소를 인수로 전달받아 인코딩한다.

- decodeURIComponent 함수는 매개변수로 전달된 URI 구성 요소를 디코딩한다.

 

3. 암묵적 전역

var x = 10;

function foo() {
  y = 20; // window.y = 20;
}
foo();

// 선언하지 않은 식별자 y를 전역에서 참조할 수 있다.
console.log(x + y); // 30

선언하지 않은 식별자에 값을 할당하면 전역 객체의 프로퍼티가 된다.

이를 암묵적 전역(implict global)이라 한다.

 

'JavaScript' 카테고리의 다른 글

[Deep Dive] 23장 - 실행 컨텍스트  (0) 2022.11.25
[Deep Dive] 22장 - this  (1) 2022.11.19
[Deep Dive] 20장 - strict mode  (0) 2022.11.06
[Deep Dive] 19장 - 프로토타입  (0) 2022.11.04
[Deep Dive] 18장 - 함수와 일급 객체  (0) 2022.10.13