공부공부/JS 딥다이브

[js 딥다이브] 21장 빌트인 객체

고생쨩 2024. 2. 15. 08:44
728x90

21 빌트인 객체

표준 빌트인 객체 모든 js 환경
호스트 객체 브라우저 또는 node 제공
사용자 객체 사용자가 정의한 객체

표준 빌트인 객체

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

원시값과 래퍼 객체

원시값에 .으로 접근시 래퍼 객체(임시) 생성
래퍼 객체의 처리가 종료되면 가비지 컬렉션의 대상이 됨

전역 객체

브라우저 node
window, self, this 등 global
//ES11 이상
// 브라우저 환경
globalThis === this // true
globalThis === window // true
globalThis === self // true
globalThis === frames // true
// Node.js 환경(12.0.0 이상)
globalThis === this // true
globalThis === global // true

전역 객체는 표준 빌트인 객체(Object, String, Number, Function, Array 등)와 환경에 따른 호스트 객체(클라이언트 Web API 또는 Node.js의 호스트 API), 그리고 var 키워드로 선언한 전역 변수와 전역 함수를 프로퍼티로 갖는다.

  • 전역 객체는 개발자가 의도적으로 생성할 수 없다. 즉, 전역 객체를 생성할 수 있는 생성자 함수가 제공되지 않는다.
  • 전역 객체의 프로퍼티를 참조할 때 window(또는 global)를 생략할 수 있다.
// 문자열 'F'를 16진수로 해석하여 10진수로 변환하여 반환한다.
window.parseInt('F', 16); //  15
// window.parseInt는 parseInt로 호출할 수 있다.
parseInt('F', 16); //  15
window.parseInt === parseInt; //  true
  • 전역 객체는 Object, String, Number, Boolean, Function, Array, RegExp, Date, Math, Promise 같은 모든 표준 빌트인 객체를 프로퍼티로 가지고 있다.
  • 자바스크립트 실행 환경(브라우저 환경 또는 Node.js 환경)에 따라 추가적으로 프로퍼티와 메서드를 갖는다. 브라우저 환경에서는 DOM, BOM, Canvas, XMLHttpRequest, fetch, requestAnimationFrame, SVG, Web Storage, Web Component, Web Worker 같은 클라이언트 사이드 Web API 6를 호스트 객체로 제공하고 Node.js 환경에서는 Node.js 고유의 API 7를 호스트 객체로 제공한다.
  • var 키워드로 선언한 전역 변수와 선언하지 않은 변수에 값을 할당한 암묵적 전역 8, 그리고 전역 함수는 전역 객체의 프로퍼티가 된다. let, const로 선언한 변수는 전역객체의 프로퍼티가 아님
// var 키워드로 선언한 전역 변수
var foo = 1;
console.log(window.foo); // 1
// 선언하지 않은 변수에 값을 암묵적 전역. bar는 전역 변수가 아니라 전역 객체의 프로퍼티다.
bar = 2; // window.bar = 2
console.log(window.bar); // 2

빌트인 전역 프로퍼티

Infinity, NaN, undefined

빌트인 전역 함수

eval 보안에 취약하고 느림. 쓰지말것.
isFinite, isNaN, parseFloat, parseInt
진수변환
num.toString(진수)
parseInt(“문자열”, 진수)
encodeURI, decodeURI, encodeURIComponent, decodeURIComponent
encodeURIComponent 함수는 인수로 전달된 문자열을 URI의 구성요소인 쿼리 스트링의 일부로 간주한다. 따라서 쿼리 스트링 구분자로 사용되는 =, ?, &까지 인코딩한다.
반면 encodeURI 함수는 매개변수로 전달된 문자열을 완전한 URI 전체라고 간주한다. 따라서 쿼리 스트링 구분자로 사용되는 =, ?, &은 인코딩하지 않는다.

암묵적 전역

선언하지 않은 식별자는 전역객체의 프로퍼티로 동작
선언없이 동작하므로 호이스팅이 발생하지 않고 프로퍼티이므로 delete로 삭제 가능

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.