[모던 자바스크립트 Deep Dive] 21장 빌트인 객체

수정·2022년 10월 15일
0
post-thumbnail

#1 자바스크립트 객체의 분류

  • 표준 빌트인 객체
  • 호스트 객체
  • 사용자 정의 객체



#2 표준 빌트인 객체

// String 생성자 함수에 의한 String 객체 생성
const strObj = new String('Lee'); // String {"Lee"}
console.log(typeof strObj);       // object

// Number 생성자 함수에 의한 Number 객체 생성
const numObj = new Number(123); // Number {123}
console.log(typeof numObj);     // object

// Boolean 생성자 함수에 의한 Boolean 객체 생성
const boolObj= new Boolean(true); // Boolean {true}
console.log(typeof boolObj);      // object

// Function 생성자 함수에 의한 Function 객체(함수) 생성
const func = new Function('x', 'return x * x'); // ƒ anonymous(x )
console.log(typeof func);                       // function

// Array 생성자 함수에 의한 Array 객체(배열) 생성
const arr = new Array(1, 2, 3); // (3) [1, 2, 3]
console.log(typeof arr);        // object

// RegExp 생성자 함수에 의한 RegExp 객체(정규 표현식) 생성
const regExp = new RegExp(/ab+c/i); // /ab+c/i
console.log(typeof regExp);         // object

// Date 생성자 함수에 의한 Date 객체 생성
const date = new Date();  // Fri May 08 2020 10:43:25 GMT+0900 (대한민국 표준시)
console.log(typeof date); // object

생성자 함수인 표준 빌트인 객체가 생성한 인스턴스의 프로토타입은 표준 빌트인 객체의 prototype 프로퍼티에 바인딩된 객체다.



#3 원시값과 래퍼 객체

const str = 'hello';

// 원시 타입인 문자열이 프로퍼티와 메서드를 갖고 있는 객체처럼 동작한다.
console.log(str.length); // 5
console.log(str.toUpperCase()); // HELLO

문자열, 숫자, 불리언 값에 대해 객체처러 접근하면 생성되는 임시 객체를 래퍼 객체라 한다.

문자열, 숫자, 불리언, 심벌 이외의 원시값, 즉 null과 undefined는 래퍼 객체를 생성하지 않는다. 따라서 null과 undefined 값을 객체처럼 사용하면 에러가 발생한다.



#4 전역 객체

전역 객체는 자바스크립트 환경에 따라 지칭하는 이름이 제각각이다. 브라우저 환경에서는 window(또는 self, this, frames)가 전역 객체를 가리키지만 Node.js 환경에서는 global이 전역 객체를 가리킨다/

let이나 const 키워드로 선언한 전역 변수는 전역 객체의 프로퍼티가 아니다.

빌트인 전역 프로퍼티

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

  • Infinity : 무한대를 나타내는 숫자값 Infinity를 갖는다.
  • NaN : 숫자가 아님을 나태는 숫자값 NaN을 갖는다.
  • undefined : 원시타입 undefined를 값으로 갖는다.

빌트인 전역 함수

빌트인 전역 함수는 애플리케이션 전역에서 호출할 수 있는 빌트인 함수로서 전역 객체의 메서드다.

  • eval : 기존의 스코프를 런타임에 동적으로 수정한다.
  • isFinite : 전달받은 인수가 정상적인 유한수인지 검사한다.
  • inNaN : 전달받은 인수가 NaN인지 검사한다.
  • parseFloat : 전달받은 문자열 인수를 실수로 해석하여 반환한다.
  • parseInt : 전달받은 문자열 인수를 정수로 해석하여 반환한다.
  • encodeURI : 완전한 URI를 문자열로 전달받아 이스케이프 처리를 위해 인코딩한다.
  • decodeURI : 인코딩된 URI를 인수로 전달받아 이스케이프 처리 이전으로 디코딩한다.
  • encodeURIComponent : URI 구성 요소를 인수로 전달받아 인코딩한다.
  • decodeURIComponent : 매개변수로 전달된 URI 구성 요소를 디코딩한다.

암묵적 전역

// 전역 변수 x는 호이스팅이 발생한다.
console.log(x); // undefined
// 전역 변수가 아니라 단지 전역 객체의 프로퍼티인 y는 호이스팅이 발생하지 않는다.
console.log(y); // ReferenceError: y is not defined

var x = 10; // 전역 변수

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

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

변수가 아니라 단지 프로퍼티인 y는 delete 연산자로 삭제 할 수 있다. 전역 변수는 프로퍼티이지만 delete 연산자로 삭제 할 수 없다.

profile
공부 기록

0개의 댓글