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
전역 객체
: 코드 실행 전에 자바스크립트 엔진에 의해 어떤 객체보다도 먼저 생성되는 특수한 객체이며, 어떤 객체에도 속하지 않은 최상위 객체이다.
전역 객체의 특징
- 생성자 함수가 제공되지 않는다. (개발자가 의도적으로 생성할 수 없다.)
- 전역 객체의 프로퍼티를 참조할 때 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으로 해석해 전역 객체에 프로퍼티를 동적 생성한다. 이를 암묵적 전역이라 한다.