Search

18장 빌트인 객체

대분류
언어
서적
소분류
JS DeepDive
태그
객체
빌트인
암묵적 전역
래퍼 객체
최종 편집 일시
2024/10/27 15:40
생성 일시
2024/02/01 10:45
14 more properties

자바스크립트 객체의 분류

표준 빌트인 객체: ECMAScript 사양에 정의된 객체이며, 애플레케이션 전역의 공통 기능을 제공한다.
호스트 객체: JS실행환경 (브라우저 환경에선 WebApi or Node.js 환경에선 Node.js고유 API)에서 추가로 제공되는 객체
사용자 정의 객체: 사용자가 직접 정의한 객체

표준 빌트인 객체

Object, String, Number, Boolean, Symbol, Date, Math, RegExp, Array, Map/Set, 등등의 표준 빌트인 객체가 존재

원시값과 래퍼 객체

const str = 'hello'; // 원시 타입인 문자열이 프로퍼티와 메서드를 갖고 있는 객체처럼 동작한다. console.log(str.length); // 5 console.log(str.toUpperCase()); // HELLO
JavaScript
복사
래퍼 객체 : 문자열, 숫자, 불리언 값에 대해 객체처럼 접근하면 생성되는 임시 객체
래퍼 객체로 프로퍼티에 접근하거나 메서드를 호출한 후, 다시 원시값으로 전환 --> Number인 숫자 값도 마찬가지로 래퍼 객체로 프로퍼티 메서드 접근 가능

전역 객체

JS엔진에 의해 어떤 객체보다도 먼저 생성되는 특수한 객체
브라우저 --> window
Node.js --> global
ECMASCript 표준사양으로 globalThis라는 전역 객체를 가리키는 통일 식별자가 나옴.
전역 객체는 표준 빌트인 객체와 호스트 객체, var키워드로 선언한 전역 변수와 전역 함수를 프로퍼티로 소유
전역 객체 자신은 어떤 객체의 프로퍼티도 아니며 객체의 계층적 구조상 어떤 객체에도 속하지 않는, 최상위 객체

빌트인 전역 프로퍼티

Infinity(무한대)
NaN(숫자가 아님을 나타냄)
undefined

빌트인 전역 함수

eval (사용금지)
eval함수는 기존의 스코프를 런타임에 동적으로 수정
'use strict'나 const, let을 사용하면 기존스코프를 수정하지 않고 eval함수 자체적인 스코프를 생성
보안에 매우 취약하여 eval함수는 사용 금지
isFinite: 유한수인지 판별
isNaN: 전달받은 인수가 NaN인지 판별
parseFloat: 문자열을 실수로 해석하여 반환
parseInt: 문자열을 정수로 해석하여 반환
encodeURI / decodeURI : 완전한 URI를 문자열로 전달받아 이스케이프 처리를 위해 인코딩
(알파벳, 0~9숫자, 일부 특수문자는 이스케이프 처리에서 제외)
%, ?, # 은 의미를 갖고 있는 문자여서 처리
encodeURIComponent / decodeURIComponent : 쿼리스트링 구분자로 사용되는 =, ?, & 까지 인코딩

암묵적 전역

var x = 10; function foo() { // 선언하지 않은 식별자에 값 할당 y = 20; } foo(); // 선언하지 않은 식별자를 전역에서 참조 가능 console.log(x + y); // 30
JavaScript
복사
암묵적 전역 : y는 마치 선언된 전역변수 처럼 동작. JS엔진인 window.y = 20으로 해석하기 때문에 전역 객체에 프로퍼티를 동적 생성.
이러한 경우 변수가 아닌 프로퍼티로 추가되었기 때문에 변수 호이스팅이 발생하지 않고
(선언 전 y참조시 ReferenceError) delete로 프로퍼티를 삭제하는 것과 같이 삭제 가능