//////
Search

21장. 빌트인 객체

21.1 분류

표준 빌트인 객체
호스트 객체
사용자 정의 객체

21.2 표준 빌트인 객체

자바스크립트는 40여개 표준 빌트인 객체 제공
Math, Reflect, JSON을 제외한 모든 빌트인 객체는 인스턴스 생성이 가능한 생성자 함수 객체임
생성자 함수 객체인 표준 빌트인 객체: 프로토타입 메서드와 정적 메서드 제공 생성자 함수 객체가 아닌 표준 빌트인 객체: 정적 메서드 제공

21.3 원시값과 래퍼 객체

본래 원시값은 객체가 아니므로 프로퍼티나 메서드를 가질 수 없음
하지만 원시값을 객체처럼 사용하면 자바스크립트 엔진은 암묵적으로 연관된 객체를 생성하여 생성된 객체로 프로퍼티에 접근하거나 메서드를 호출하고 다시 원시값으로 되돌림 -> 문자열, 숫자, 불리언 값에 대해 객체처럼 접근하면 생성되는 임시 객체래퍼 객체라고 함
원시값을 객체처럼 사용하면 래퍼 객체 생성 -> 프로토타입 메서드 사용가능 -> 래퍼 객체 처리가 끝나면 원시값을 되돌림 -> 래퍼객체는 가비지 컬렉션 대상
숫자, 문자열, 불리언, 심볼 이외의 null, undefined와 같은 원시값에 대해 객체처럼 사용하면 에러 발생

21.4 전역 객체

자바스크립트 환경에 따라 이름이 제각각 (브라우저: window, Node.js: global)
전역객체의 프로퍼티: 표준 빌트인 객체, 환경에 따른 호스트 객체(클라이언트 Web API, Node.js의 호스트 API), var 키워드로 선언한 전역 변수, 전역 함수
모든 빌트인 객체의 최상위 객체
어떠한 객체의 프로퍼티가 아니며, 표준빌트인객체와 호스트 객체를 프로퍼티로 소유

특징

의도적으로 생성 불가능, 따라서 생성자 함수 제공되지 않음
전역 객체의 프로퍼티를 참조할 때, window(global) 생략 가능
모든 빌트인 객체를 프로퍼티로 가짐
실행 환경에 따라 추가적으로 프로퍼티와 메서드를 가짐 (브라우저: DOM, BOM, Canvas, XMLHttpRequest, fetch, requestAnimationFrame, SVG, Web Storage, Web Component, Web Worker 와같은 클라이언트 사이즈 Web API를 호스트 객체로 제공 Node.js: 고유의 API를 호스트 객체로 제공)
var 키워드로 선언한 전역 변수, 선언하지 않은 변수에 값을 할당한 암묵적 전역, 전역함수는 전역 객체의 프로퍼티가 됨

21.4.1 빌트인 전역 프로퍼티

Infinity
NaN
undefined

21.4.2 빌트인 전역 함수

eval(‘’) (eval 함수의 사용 금하래요)
isInfinite
isNaN
parseFloat
parseInt
incodeURI / decodeURI
incodeURIComponent / decodeURIComponent

21.4.3 암묵적 전역

선언하지 않은 식별자에 값을 할당하면 암묵적으로 전역객체의 프로퍼티가 됨 이것은 변수가 아님, 호이스팅이 일어나지 않음
변수가 아니고 단지 프로퍼티기때문에 delete 연산자로 삭제 가능