[JS]모자딥 CH.21 빌트인 객체

현우.·2024년 11월 19일
post-thumbnail

자바스크립트 객체의 분류

1. 표준 빌트인 객체

ECMAScript 사양에 정의된 객체로 실행환경에 관계없이 언제나 사용가능하다.
전역객체의 프로퍼티로 제공되기 때문에 별도의 선언없이 전역변수처럼 참조할 수 있다.

ex) Object, String,Number,Boolean,Symbol,Date,Math,RegExp,Array.... 40여개

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

인스턴스 메서드, 정적 메서드 제공

인스턴스를 생성할 수 있는 빌트인 객체들은 인스턴스 메서드, 정적메서드 모두 제공한다.

const numObj = new Number(10);

console.log(numObj.toFixed(2)); // 인스턴스 메서드

console.log(Number.isInteger(numObj)); // 정적 메서드

2. 호스트 객체

자바스크립트 실행환경에 따라 추가로 제공되는 객체이다.
브라우저 - DOM,BOM,fetch,XMLRequest... 같은 클라이언트 사이드 WEB API
node.js - Nodejs 고유의 API

3. 사용자 정의 객체

사용자가 직접 정의한 객체를 말한다.


원시값 & 래퍼 객체

JS의 원시값들은 래퍼객체 의해서 자신의 타입과 관련된 객체로 일시적으로 변한 후 해당 객체의 프로퍼티나 메서드에 접근할 수 있다. 호출이 끝나면 다시 원시값으로 돌아온다.

래퍼객체

원시값들이 마침표 표기법을 사용해 객체처럼 접근할 경우 원시값에 일시적으로 해당 타입의 객체를 덮어 씌워주는 객체

const str = "hello";

console.log(str.length); // new String(str).length
console.log(str.toUpperCase());

래퍼 객체가 생성되면 래퍼객체인 String 생성자 함수의 인스턴스가 생성되고
문자열은 래퍼객체의 [[StingData]] 내부 슬롯에 할당된다.

이후 객체 처리가 종료되면 [[StringData]]안에 할당된 원시값으로 되돌아가고 해당 래퍼 객체는 가비지 컬렉션의 대상이 된다.

예시를 보자

//number 타입 원시값
const num = 1.5;

// Number 래퍼객체에 의해 인스턴스 생성되고 [[NumberData]]안에 원시값 할당
console.log(num.toFixed(4)); // 1.5000

// 객체 처리가 종료되어 래퍼객체는 가비지 컬렉션의 대상이되며
// num은 다시 원시타입과 값으로 돌아간다.
console.log(typeof num, num); // number, 1.5

전역 객체

코드가 실행되기 이전에 JS 엔진에 의해 어떤 객체보다도 먼저 생성되는 특수한 객체이며 최상위 객체이다.

전역 객체가 가지고 있는 객체

  1. 표준 빌트인 객체 - Object,String,Number,Function...를 프로퍼티로 가진다.
  2. 호스트 객체 -Web API, Nodejs 호스트 API를 프로퍼티로 가진다.
  3. var 키워드로 선언한 전역변수, 암묵적 전역, 전역함수를 프로퍼티로 가진다.

전역 객체의 프로퍼티와 메서드는 전역객체를 가리키는 식별자(window/global)을 생략하고 사용가능하다.
즉, 전역변수, 전역함수처럼 사용이 가능하다.

빌트인 전역 프로퍼티

빌트인 전역 프로퍼티란 전역 객체의 프로퍼티를 의미한다.

  • Infinity, -Infinity : number 타입이다.
  • NaN : number 타입이다.
  • undefined : undefined 타입이다.
console.log(window.Infinity);
console.log(typeof Infinity);

console.log(window.NaN);
console.log(typeof NaN);

console.log(window.undefined );
console.log(typeof undefined);

빌트인 전역 함수

빌트인 전역 함수는 전역객체의 메서드를 말한다.

  • eval : 자바스크립트 코드를 나타내는 문자열을 인수로 받는다.

  • isFinite: boolean 타입을 반환한다. 전달받은 값이 숫자가 아니면 숫자로 변환후 검사

  • isNaN: boolean 타입을 반환한다. 전달받은 값이 숫자가 아니면 숫자로 변환후 검사

  • parseFloat: 전달받은 문자열을 실수로 해석해 반환한다.
    첫번째 문자열이 숫자로 반환할 수 없으면 NaN 반환

  • parseInt: 전달받은 문자열을 정수로 해석해 반환한다.
    첫번째 문자열이 해당 지수의 숫자로 변환될 수 없다면 NaN 반환
    두번째 인수로 진수(2~36)를 전달 할 수 있다. 반환값은 언제나 10진수이다.
    참고) 10진수 -> 나머지 진수로 변환하는 법은 toString() 메서드를 사용하면 된다.

console.log(parseFloat(3.15)); //3.15
console.log(parseFloat("34 35 44")); // 34
console.log(parseFloat("hi 40")); // NaN

console.log(parseInt(10.234)); //10
console.log(parseInt(10, 2)); // 10을 2진수로 보고 10진수로 변환

const x = 10;
console.log(parseInt(x.toString(2), 2)); // 10
console.log(parseInt("AC")); // NaN
  • encodeURI /decodeURI
  • encodeURIComponent/decodeURIComponent
profile
학습 기록.

0개의 댓글