09_기타 Built-in 객체

Onew·2025년 9월 26일
0

js

목록 보기
14/24

💡 래퍼 객체 (wrapper object)

var str = "문자열";
var len = str.length;
  • 위 예제의 str은 객체가 아님에도 length를 사용할 수 있다.
  • 자바스크립트가 new String(str)을 호출한 것처럼 문자열을 객체로 자동으로 변환해 준다.
  • 원시 타입의 property에 접근하려고 할 때 생성되는 임시 객체를 wrapper object라고 한다.

1. Number

  • Number 객체는 Number() 생성자 함수를 통해 생성할 수 있다.
    const obj = new Number();
  • 별도로 인수를 전달하지 않을 경우, 0을 할당한다.
  • 숫자로 형변환이 불가능 할 경우, NaN을 반환한다.

1_1) Number property

  • Number.MAX_VALUE
    • JavaScript에서 표현할 수 있는 가장 큰 양수 값이다.

    • Infinity와 비교하면 Infinity가 더 크다.

      console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
    • 지수 표기법

      • 알파벳 e를 사용한 표기하는 방법을 지수 표기법이라고 한다.

      • 왼편의 수에 오른쪽 수만큼 10의 거듭제곱을 곱하는 의미가 담겨 있다.

        console.log(25e5);  // 2500000
  • Number.MIN_VALUE
    • JavaScript에서 표현할 수 있는 가장 작은 양수 값이다.

      console.log(Number.MIN_VALUE);  // 5e-324
  • Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER
    • JavaScript에서 안전하게 표현할 수 있는 가장 큰/작은 정수 값이다.

    • “안전하게”의 의미
      - JavaScript가 정확하게 표현할 수 있는 가장 큰/작은 정수이다.
      - 이 값을 넘어서면 정밀도 손실이 발생하기 때문에 “안전한” 범위라고 부른다.

      console.log(Number.MAX_SAFE_INTEGER);  // 9007199254740991
      console.log(Number.MIN_SAFE_INTEGER);  // -9007199254740991
  • Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY
    • 양/음의 무한대를 나타내는 숫자 값 Infinity/-Infinity와 같다.

      console.log(Number.POSITIVE_INFINITY);  // Infinity
      console.log(Number.NEGATIVE_INFINITY);  // -Infinity
  • Number.NaN
    • 숫자가 아닌 것을 나타내는 숫자의 값이다.

      console.log(Number.NaN);  // NaN
  • Number.EPSILON
    • 부동 소수점으로 인해 발생하는 오차를 해결하기 위해 사용한다.

      • 부동 소수점이란
        • 컴퓨터가 실수를 저장하는 방식이다.

        • 제한된 비트로 무한한 실수를 표현하려고 하니 근사값만 저장이 가능하다.

        • 그래서 일부 소수는 정확하게 표현이 불가능 하다.

          EX) 0.1 + 0.2 ≠ 0.3

    • 부동 소수점 표현은 2진법으로 변환 했을 때 무한 소수가 되어 미세한 오차가 발생할 수 밖에 없다.

    • 1과 1보다 크지만 가장 근접한 숫자와의 차이와 같다.

      console.log(Number.EPSILON);  // 2.220446049250313e-16

1_2) Number method

  • Number.isFinite
    • 인수로 전달된 숫자 값이 정상적인 유한수인지 검사 후 반환한다.

    • 결과는 boolean 타입으로 반환 한다.

      console.log(Number.isFinite(10));  // true
  • Number.isInteger
    • 인수로 전달된 숫자 값이 정수인지 검사 후 반환한다.

    • 결과는 boolean 타입으로 반환 한다.

      console.log(Number.isInteger(10));  // true
      console.log(Number.isInteger(10.10));  // false
  • Number.isNaN
    • 인수로 전달된 숫자 값이 NaN인지 검사 후 반환한다.

    • 결과는 boolean 타입으로 반환한다.

      console.log(Number.isNaN(NaN));  // true
      console.log(Number.isNaN(undefined));  // false
  • Number.isSafeInteger
    • 인수로 전달된 숫자 값이 안전한 정수인지 검사 후 반환한다.

    • 결과는 boolean 타입으로 반환한다.

      console.log(Number.isSafeInteger(10));  // true
      console.log(Number.isSafeInteger(10.10));  // false
  • Number.toExponential
    • 숫자를 지수 표기법으로 변환해 문자열로 반환한다.

    • e 앞에 있는 숫자에 10의 n승을 곱하는 형식으로 수를 나타낸다.

      console.log((1.23456).toExponential()); // 1.23456e+0
  • Number.toFixed
    • 숫자를 반올림하고 문자열로 반환한다.

    • 반올림 하는 소수점 이하의 자리수를 나타내는 0~20 사이의 정수 값을 인수로 전달할 수 있다.

      console.log((1.23456).toFixed());  // 1
  • Number.toPrecision
    • 인수로 전달 받은 전체 자릿수까지 유효하도록 나머지 자릿수를 반올림해 문자열로 반환한다.

    • 0~21 사이의 정수 값을 인수로 전달할 수 있다.

    • 생략하면 기본 값 0이 지정 된다.

      console.log((123.456).toPrecision(5)); // 123.46
  • Number.toString
    • 숫자를 문자열로 변환하여 반환한다.

    • 진법을 나타내는 2~36 사이의 정수 값을 인수로 전달할 수 있다.

      console.log((100).toString(2));  // 1100100

2. Math

2_1) Math property

  • Math.PI
    • 원주율 PI 값을 반환한다.

      console.log(Math.PI);  // 3.141592653589793

2_2) Math method

  • Math.abs
    • 인수로 전달된 숫자의 절댓값을 반환한다.

      console.log(Math.abs(-10));  // 10
      console.log(Math.abs(10));  // 10
  • Math.round
    • 인수로 전달된 숫자의 소수점 이하를 반올림 한 정수를 반환한다.

      console.log(Math.round(10.1));  // 10
      console.log(Math.round(10.11));  // 10
  • Math.ceil
    • 인수로 전달된 숫자의 소수점 이하를 올림 한 정수를 반환한다.

      console.log(Math.ceil(10.1));  // 11
      console.log(Math.ceil(10.11));  // 11
  • Math.floor
    • 인수로 전달된 숫자의 소수점 이하를 내림한 정수를 반환한다.

      console.log(Math.floor(10.1));  // 10
      console.log(Math.floor(10.11));  // 10
  • Math.sqrt
    • 인수로 전달된 숫자의 제곱근을 반환한다.

      console.log(Math.sqrt(4));  // 2
      console.log(Math.sqrt(2));  // 1.4142135623730951
  • Math.random
    • 임의의 난수(0에서 1 미만의 실수)를 반환한다.

      console.log(Math.random());  // 1~100 사이의 난수를 추출한다
  • Math.pow
    • 첫 번째 인수를 두 번째 인수로 거듭 제곱한 결과를 반환한다.

    • ES7에서 도입된 지수 연산자(**)로 대신해 사용할 수 있다.

      console.log(Math.pow(2, 2));  // 4
      console.log(2 ** 2);  // 4
  • Math.max
    • 전달 받은 인수 중 가장 큰 수를 반환한다.

      console.log(Math.max(10, 20, 30));  // 30
  • Math.min
    • 전달 받은 인수 중 가장 작은 수를 반환한다.

      console.log(Math.min(10, 20, 30));  // 10

3. Date

  • 날짜와 시간을 위한 메서드를 제공하는 객체이면서 생성자 함수이다.
  • UTC : 국제 표준 시로 기술적인 표기에서 사용된다
  • KST(한국 표준시) : UTC에 9시간을 더한 시간이다
  • Date 객체는 내부적으로 날짜와 시간을 나타내는 정수 값을 가진다.

3_1) Date 생성

  • new Date()
    • 현재 날짜와 시간을 나타낸다.

      // 1. new Date() : 현재 날짜와 시간을 가지는 Date 객체 반환
      console.log(new Date());
      
      // 2. new Date(milliseconds) : 1970년 1월 1일 00:00:00(UTC)를 기점으로 인수로 전달 된 밀리초만큼 경과한 날짜와 시간을 나타내는 Date 객체 반환
      console.log(new Date(0));                       // 1970-01-01T00:00:00.000Z
      console.log(new Date(24 * 60 * 60 * 1000));     // 1970-01-02T00:00:00.000Z
      
      // 3. new Date(dateString) : 날짜와 시간을 나타내는 문자열을 인수로 전달하면 지정 된 날짜와 시간을 나타내는 Date 객체 반환
      console.log(new Date('Jul 26, 2022 09:00:00')); // 2022-07-26T00:00:00.000Z
      console.log(new Date('2022/07/26/09:00:00'));   // 2022-07-26T00:00:00.000Z
      
      // 4. new Date(year, month[, day, hour, minute, second, millisecond]) : 연, 월, 일, 시, 분, 초, 밀리초를 의미하는 숫자를 인수로 전달하면 지정 된 날짜와 시간을 나타내는 Date 객체 반환
      // 연, 월은 반드시 지정해야 하며 지정하지 않은 정보는 0 또는 1로 초기화 된다
      // month(0~11)에 주의한다
      console.log(new Date(2022, 1));                     // 2022-01-31T15:00:00.000Z
      console.log(new Date(2022, 1, 1, 9, 0, 0, 0));      // 2022-02-01T00:00:00.000Z
    • 날짜와 시간을 나타내는 문자열을 인수로 전달하면 지정된 날짜와 시간을 나타내는 Date 객체를 반환한다.

    • 연, 월, 일, 시, 분, 초, 밀리초를 의미하는 숫자를 인수로 전달하면 지정된 날짜와 시간을 나타내는 Date 객체를 반환한다.

      • 연, 월은 반드시 지정해야 하며 지정하지 않은 정보는 0 또는 1로 초기화 된다.

3_2) Date method

  • Date.now
    • 1970년 1월 1일 00:00:00(UTC)를 기점으로 현재 시간까지 경과한 밀리초를 숫자로 반환 한다.

      console.log(Date.now());  // 1749708974423
  • Date.parse
    • 1970년 1월 1일 00:00:00(UTC)를 기점으로 인수로 전달된 지정 시간까지의 밀리초를 숫자로 반환한다.

    • new Date(year, month[, day, hour, minute, second, millisecond]) 같은 형식의 인수를 사용한다.

    • 인수는 KST가 아닌 UTC로 인식된다.

      console.log(Date.parse('Jan 1, 1970 09:00:00'));            // 0
      console.log(Date.parse('Jan 1, 1970 09:00:00 UTC'));        // 32400000
      console.log(Date.parse('1970/01/01/09:00:00'));             // 0
      console.log(Date.parse('1970/01/01/09:00:00 UTC'));         // 32400000
      console.log(Date.UTC(1970, 0, 1));                          // 0
  • 특정 시간 반환

    • getFullYear : 년도 반환
    • getMonth : 월 반환
    • getDate : 일 반환
    • getDay : 요일 반환
    • getHours : 시 반환
    • getMinutes : 분 반환
    • getSeconds : 초 반환
    • getMilliseconds : 밀리초 반환
  • 특정 시간 설정

    • setFullYear, setMonth, setDate, setHours, setMinutes, setSeconds, setMilliseconds
  • getTime, setTime

    • 1970년 1월 1일 00:00:00(UTC)을 기점으로 경과된 밀리초를 반환/설정 한다.

      const date = new Date();
      console.log(date.getTime());  // 1749709529219
      
      date.setTime(5 * 24 * 60 * 60 * 1000);
      console.log(date);  // Tue Jan 06 1970 09:00:00 GMT+0900 (대한민국 표준시)
  • getTimezoneOffset

    • UTC와 Date 객체에 지정된 로컬 시간과의 차이를 분 단위로 반환한다.

      const today = new Date();
      console.log(today.getTimezoneOffset());  // -540
  • to[~]String

    • 문자열로 Date 객체의 날짜를 반환한다

      console.log(today.toString());  // Thu Jun 12 2025 15:28:22 GMT+0900 (대한민국 표준시)
      console.log(today.toLocaleTimeString());  // 오후 3:28:56
      console.log(today.toDateString());
      console.log(today.toTimeString());
      console.log(today.toISOString());
      console.log(today.toLocaleString());

4. String

  • new 연산자와 함께 호출해 String 인스턴스를 생성한다.

  • 인수를 전달하지 않으면 빈 문자열을 할당한 객체를 생성한다.

  • 인수로 문자열을 전달할 경우, 전달 받은 문자열을 할당한다.

  • 원시 값이므로 변경이 불가능하다. 단, 에러는 발생하지 않는다.

    • 직접 변환할 수는 없고 새로운 문자열을 생성해 반환한다.
  • 문자열이 아닌 값을 인수로 전달할 경우 문자열로 강제 변환한다.

  • string method

    • String.indexOf
      • 전달한 값과 일치하는 첫 번째 인덱스를 반환한다

      • 검색에 실패하면 -1을 반환한다

        const str = 'JavaScript';
        
        console.log(str.indexOf('a'));  // 1
    • String.includes
      • 하나의 문자열이 다른 문자열에 포함되어 있는지 판별한 후 반환한다

      • 결과는 boolean 타입으로 반환한다

        const str = 'JavaScript';
        
        console.log(str.includes('a'));  // true
    • String.search
      • 인수로 전달 받은 정규 표현식과 매치하는 문자열을 검색해 일치하는 문자열 인덱스를 반환한다

        const str = 'JavaScript';
        console.log(str.search(/a/));  // 1
    • String.startsWith, String.endsWith
      • 어떤 문자열이 특정 문자로 시작/끝나는지 확인해 결과를 반환한다

      • 결과는 boolean 타입으로 반환한다

        const str = 'JavaScript';
        console.log(str.startsWith('Ja'));  // true
        console.log(str.endsWith('pt'));  // true
    • String.charAt
      • 문자열에서 특정 인덱스에 위치하는 유니코드 단일 문자를 반환한다

        const str = 'JavaScript';
        console.log(str.charAt(3));  // a
    • String.substring
      • string 객체의 시작 인덱스부터 종료 인덱스 전까지 문자열의 부분 문자열을 반환한다

      • 두 번째 인수의 인덱스 위치 바로 이전 문자까지 반환한다

      • 두 번째 인수 생략 시 문자열의 끝까지 반환한다

      • 음수는 0으로 취급한다

      • length 보다 크면 length로 취급한다

        const str = 'JavaScript';
        console.log(str.substring(1,4));  // ava
    • String.slice
      • 문자열의 일부를 추출하면서 새로운 문자열을 반환한다

      • 음수인 인수를 전달하면 가장 뒤에서부터 시작하고 잘라내 반환한다

        const str = 'JavaScript';
        console.log(str.slice(-1));  // t
    • String.toUpperCase, String.toLowerCase
      • 문자열을 대문자/소문자로 변환해 반환한다

        const str = 'JavaScript';
        console.log(str.toUpperCase());  // JAVASCRIPT
        console.log(str.toLowerCase());  // javascript
    • String.trim
      • 문자열의 앞뒤 공백 문자 제거 후 반환한다

        const str2 = '   JavaScript   ';
        console.log(str2.trim());  // JavaScript
    • String.repeat
      • 전달 받은 정수만큼 반복해 연결한 새로운 문자열을 반환한다

      • 실수는 정수로 처리되고 음수는 에러가 발생한다

        const str = 'JavaScript';
        console.log(str.repeat(2));  // JavaScriptJavaScript
    • String.replace
      • 첫 번째 인수로 전달 받은 문자열 혹은 정규 표현식을 검색해 두 번째 인수로 치환한 문자열을 반환한다

      • 검색된 문자열이 여러 개일 경우 첫 번째 문자열만 치환한다

        const str = 'JavaScript';
        console.log(str.replace('Java', 'Type'));  // TypeScript
    • String.split
      • 첫 번째 인수로 전달한 문자열 혹은 정규식을 검색해 문자열을 구분한 후 분리된 각 문자열로 이루어진 배열을 반환한다

      • 인수로 빈 문자열을 전달하면 각 문자를 모두 분리한다

      • 인수를 생략하면 문자열 전체를 단일 요소로 하는 배열을 반환한다

      • 두 번째 인수로 배열의 길이를 지정한다

        const str3 = 'Hello, Everyone! Nice to see you again.';
        console.log(str3.split(' '));  // ['Hello,', 'Everyone!', 'Nice', 'to', 'see', 'you', 'again.']

0개의 댓글