빌트인 객체

Seongkyun Yu·2020년 12월 7일
0

TIL - Javascript

목록 보기
15/28

기존 블로그에 작성한 내용을 velog로 이전한 글입니다


1. 객체의 분류

  • 전역 객체 : 최상위 객체

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

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

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


2. 전역 객체

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

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

  • 특징

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

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

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

  • 전역 함수

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

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

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

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

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


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

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

      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 :
      쿼리 파라미터 일부를 다시 디코딩한다

      // 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 삭제할 수 있다

    // 전역 변수 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

3. 표준 빌트인 객체

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

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

  • 래퍼 객체

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

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

    const str = "hi";
    
    // 원시 타입인 문자열이 레퍼 객체인 String 인스턴스로 변환된다.
    console.log(str.length); // 2
    console.log(str.toUpperCase()); // HI
    
    // 레퍼 객체로 프로퍼티 접근이나 메소드 호출한 후, 다시 원시값으로 되돌린다.
    console.log(typeof str); // string

참고자료: poiemaweb.com

profile
FrontEnd Developer

0개의 댓글