TIL/JS

조금 어려운 빌트인 객체

saramnim 2023. 2. 23. 02:50
728x90

빌트인 객체에 대해 알아보자!

빌트인 객체

빌트인 객체의 종류

표준 빌트인 객체

ECMAScript 사양에 정의된 객체

더보기

- 애플리케이션 전역의 공통 기능을 제공하며 JS 실행환경과 관계없이 언제나 사용 가능
- 전역 객체의 프로퍼티로서 제공되며 별도의 선언 없이 전역 변수처럼 언제나 참조 가능

 

호스트 객체

ECMAScript 사양에 정의되어 있지 않지만 자바스크립트 실행환경에서 추가로 제공하는 객체

더보기

- 브라우저환경(DOM, BOM, Canvas 등)에서는 클라이언트 사이드 Web API를 호스트 객체로 제공

- Node.js 환경에서는 Node.js 고유의 API를 호스트 객체로 제공

 

사용자 정의 객체

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

 


표준 빌트인 객체

  • Object, String부터 Math, Mapp, Function, Promise, JSON, Error 등을 포함
  • Math, Reflect, JSON을 제외한 표준 빌트인 객체는 모두 인스턴스를 생성할 수 있는 생성자 함수 객체
  • 생성자 함수 객체인 표준 빌트인 객체는 프로토타입 메서드와 정적 메서드를 제공
  • 생성자 함수 객체가 아닌 표준 빌트인 객체는 정적 메서드만 제공

 

const date = new Date(); // Fri May 08 2020 12:00:00 GMT +0900 (대한민국 표준시) 
console.log(typeof date); // object
  • Date를 다른 표준 빌트인 객체 String, number, Boolean, Function, Array, Date, RegExp로 바꿔 생성자 함수를 호출해도 인스턴스를 생성할 수 있다.

 

const strObj = new String('Lee'); // String {"Lee"}
// String 생성자 함수에 의한 String 객체 생성
console.log(Object.getPrototypeOf(strObj) === String.prototype); // true
// String 생성자 함수를 통해 생성한 strObj 객체의 프로토타입은 String.prototype이다.
  • 생성자 함수인 표준 빌트인 객체가 생성한 인스턴스의 프로토 타입 = 표준 빌트인 객체의 프로토타입에 바인딩된 객체
  • 표준 빌트인 객체의 프로토 타입에 바인딩된 객체는 인스턴스 없이도 호출 가능한 빌트인 정적 메서드를 제공
    -> 표준 빌트인 객체인 String을 생성자 함수로서 호출하여 생성한 String 인스턴스의 프로토 타입은 String.prototype이다.

 

const num = new Number(1);    // Number 생성자 함수에 의해 Number 객체 생성
console.log(num.toFixed());    // toFixed = Number.prototype의 프로토타입 메서드
console.log(Number.isInteger(0.5));    // isInteger = Number의 정적 메서드
  • 표준 빌트인 객체는 인스턴스 없이 정적으로 호출할 수 있는 정적 메서드를 제공하며
    해당 객체의 프로토타입에 바인딩된 객체는 다양한 빌트인 프로토 타입 메서드를 제공한다.
    어려운 설명이지만 쉽게 보자면 위와 같다.
본 게시글은 모던자바스크립트 Deep Dive - 자바스크립트의 기본 개념 책을 읽고 정리했습니다.
더 자세한 내용은 책을 구매해보시길 권장드립니다!
728x90
반응형