파피루스

21장, 빌트인 객체 본문

Book/모던 자바스크립트 Deep Dive

21장, 빌트인 객체

떼굴펜 2024. 5. 29. 09:56

자바스크립트 객체 분류

1. 표준 빌트인 객체 : ECMAScript 사양에 정의된 객체

2. 호스트 객체 : 실행환경 (브라우저, node.js)에서 제공 (ex. DOM, fecth 등)

3. 사용자 정의 객체

 

래퍼 객체 

: 객체처럼 접근하면 생성되는 임시 객체

 

원시값을 객체처럼 사용하면, 자바스크립트 엔진은 암묵적으로 연관 객체를 생성하여 프로퍼티에 접근하거나 메서드를 호출하고 다시 원시 값으로 되돌린다.

const str = 'hello';
str.name = 'Lee';            // 여기에서 str은 암묵적으로 생성된 래퍼 객체이다.
console.log(str.name);   // undefined
console.log(typeof str, str); // string hello

 

전역 객체

: 코드 실행 전에 자바스크립트 엔진에 의해 어떤 객체보다도 먼저 생성되는 특수한 객체이며, 어떤 객체에도 속하지 않은 최상위 객체이다.

 

전역 객체의 특징 

  1. 생성자 함수가 제공되지 않는다. (개발자가 의도적으로 생성할 수 없다.)
  2. 전역 객체의 프로퍼티를 참조할 때 window(또는 global)를 생략할 수 있다.

 

globalThis : 전역 객체를 가리키던 다양한 식별자를 통일한 식별자

// 브라우저 환경
globalThis === this        // true
globalThis === window  // true
globalThis === self        // true
globalThis === frames   // true

// node.js 환경
globalThis === this      // true
globalThis === global  // true

 

 

빌트인 전역 프로퍼티

  • Infinity
  • NaN
  • undefined

빌트인 전역 함수

  • eval( string ) : 자바스크립트 코드를 인자로 받아 실행한 결과 값을 반환한다.
const x = 1;
function foo () {
   eval('var x = 2;');
   console.log(x); // 2
}
foo();
console.log(x); // 1

 

  • isFinite( number ) : 유한수 여부를 반환한다.
    • NaN이면 false
    • null을 넣으면 0으로 변환해 검사하기에 true가 나온다
  • isNaN( number ) : 숫자 여부 반환
  • parseFloat( string ) : 실수 반환.
  • parseInt( string, radix ) : 정수 반환
    • radix : 진법을 나타내는 기수 (default 10)
  • encodeURI(uri) / decodeURI(uri)
  • encodeURIComponent( uriComponent ) / decodeURIComponent( uriComponent )
    • 쿼리 스트링 구분자(=, ?, &) 까지 인코딩 한다.

 

암묵적 전역

const x = 10;
function foo() {
     y =20;  // 선언하지 않은 식별자에 값을 할당하면, 자바스크립트 엔진은 window.y = 20으로 해석한다.
}
foo();
console.log(x+y); //30  : 선언하지 않은 식별자 y를 전역에서 참조할 수 있다.

 

 어디에서도 y변수 선언을 찾을 수 없기에 에러가 나야하지만, 자바스크립트 엔진은 y=20을 window.y = 20으로 해석해 전역 객체에 프로퍼티를 동적 생성한다. 이를 암묵적 전역이라 한다.

'Book > 모던 자바스크립트 Deep Dive' 카테고리의 다른 글

23장, 실행 컨텍스트  (0) 2024.05.30
22장, this  (0) 2024.05.29
20장, _ strict mode  (0) 2024.05.28
19장, 프로토 타입  (0) 2024.05.17
18장, 함수와 일급 객체  (0) 2024.05.09