빌트인 객체 (Built-in Object)

Posted by Seongkyun Yu on 2020-03-05
Estimated Reading Time 3 Minutes
Words 498 In Total
Viewed Times

객체의 분류

  • 전역 객체 : 최상위 객체

  • 표준 빌트인 객체 : ECMAScript 사양에 정의된 객체, 실행환경 무관

  • 호스트 객체 : 실행 환경에서 추가적으로 제공하는 객체

  • 사용자 정의 객체 : 사용자가 정의한 객체


전역 객체

  • 모든 빌트인 객체의 최상위 객체

  • 객체의 계층적 구조 상 표준 빌트인 객체와 호스트 객체를 프로퍼티로 갖는다

  • 특징

    • 전역 객체는 개발자가 의도적으로 만들 수 없다. (생성자 함수 제공X)

    • 전역 객체의 프로퍼티 참조시 window(또는 global) 생략 가능

      1
      console.log(window.parseInt === parseInt); // true
  • 전역 프로퍼티 : Infinity, NaN, undefined

  • 전역 함수

    • eval : 코드를 런타임에 동적으로 평가 및 실행

    • isFinite : 유한수인지 검사 후 불리언 타입으로 반환

    • isNaN : 전달 값을 숫자로 타입 변환 후 NaN인지 검사하여 불리언 타입으로 반환

    • parseFloat : 문자열을 부동소수점 숫자로 바꾼 후 반환

    • parseInt : 문자열을 정수형 숫자로 해석 후 반환


    • encodeURI : URI의 문자들을 이스케이프 처리함

    • decodeURI : 인코딩된 URI을 전달받아 이스케이프 처리되기 이전으로 디코딩

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      const uri = "http://example.com?name=이웅모&job=programmer&teacher";

      // encodeURI 함수는 완전한 URI를 전달받아 인코딩하여 이스케이프 처리한다.
      const enc = encodeURI(uri);
      console.log(enc);
      // http://example.com?name=%EC%9D%B4%EC%9B%85%EB%AA%A8&job=programmer&teacher

      // decodeURI 함수는 인코딩된 완전한 URI를 전달받아 이스케이프 처리되기 이전으로 디코딩한다.
      const dec = decodeURI(enc);
      console.log(dec);
      // http://example.com?name=이웅모&job=programmer&teacher

    • encodeURIComponent :
      URI의 구성요소인 쿼리 파라미터의 일부 간주하고 쿼리 파라미터 구분자로 사용되는 =, ?, &를 인코딩한다

    • decodeURIComponent :
      쿼리 파라미터 일부를 다시 디코딩한다

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      // URI의 쿼리 파라미터
      const uriComp = "name=이웅모&job=programmer&teacher";

      // encodeURIComponent 함수는 매개변수로 전달된 문자열을 URI의 구성요소인 쿼리 파라미터의 일부 간주한다.
      // 따라서 쿼리 파라미터 구분자로 사용되는 =, ?, &를 인코딩한다.
      let enc = encodeURIComponent(uriComp);
      console.log(enc);
      // name%3D%EC%9D%B4%EC%9B%85%EB%AA%A8%26job%3Dprogrammer%26teacher

      let dec = decodeURIComponent(enc);
      console.log(dec);
      // 이웅모&job=programmer&teacher

  • 암묵적 전역

    스코프 체인을 통해 선언된 변수를 찾을 수 없을 때 window.변수=할당값으로 해석하여 전역변수처럼 동작하는 것

    단 변수가 아니기 때문에 호이스팅이 발생하지 않고 delete 삭제할 수 있다

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    // 전역 변수 x는 호이스팅이 발생한다.
    console.log(x); // undefined
    // 전역 변수가 아니라 단지 전역 객체의 프로퍼티인 y는 호이스팅이 발생하지 않는다.
    console.log(y); // ReferenceError: y is not defined

    var x = 10; // 전역 변수

    function foo() {
    y = 20; // 선언하지 않은 식별자에 값을 할당
    console.log(x + y);
    }
    foo(); // 30

    // 선언하지 않은 식별자 y를 전역에서 참조할 수 있다.
    console.log(x + y); // 30

    console.log(window.x); // 10
    console.log(window.y); // 20

    delete x; // 전역 변수는 삭제되지 않는다.
    delete y; // 프로퍼티는 삭제된다.

    console.log(window.x); // 10
    console.log(window.y); // undefined

표준 빌트인 객체

  • 생성자 함수 객체: String, Number, Boolean, Function, Array, Date 등

  • 생성자 함수가 아닌 객체: Math, Reflect, JSON

  • 래퍼 객체

    문자열, 숫자, 불리언 값에 대해 객체처럼 접근하면 생성되는 임시 객체

    래퍼 객체의 처리 종료 후 원시값을 되돌리고 가비지 컬렉션 대상이 된다

    1
    2
    3
    4
    5
    6
    7
    8
    const str = "hi";

    // 원시 타입인 문자열이 레퍼 객체인 String 인스턴스로 변환된다.
    console.log(str.length); // 2
    console.log(str.toUpperCase()); // HI

    // 레퍼 객체로 프로퍼티 접근이나 메소드 호출한 후, 다시 원시값으로 되돌린다.
    console.log(typeof str); // string

참고자료: poiemaweb.com


If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !