자바스크립트 객체의 분류
- 표준 빌트인 객체
- ECMAScript 사양에 정의된 객체
- 전역 객체의 프로퍼티로서 제공
- 호스트 객체
- ECMAScript 사양에는 정의 되어있지 않지만, 브라우저 환경 또는 Node.js 환경에서 추가로 제공하는 객체
- 브라우저 환경에선 DOM, BOM, Canvas, XMLHttpRequest, fetch, requestAnimationFram, SVG, Web Storage, Web Component, Web Worker와 같은 클라이언트 사이드 Web API를 호스트로 제공,
- node.js 환경에서는 고유의 API를 호스트 객체로 제공
- 사용자 정의 객체
- 사용자가 직접 정의한 객체
표준 빌트인 객체
- 표준 빌트인 객체에는 다양한 생성자 함수가 있음
- 생성자 함수로 생성한 인스턴스의 프로토타입은 생성자 함수의 prototype 프로퍼티에 바인딩 되어있는 객체. 이 객체는 다양한 기능의 빌트인 프로토타입 메서드를 제공.
- 표준 빌트인 객체는 인스턴스 없이도 호출 가능한 빌트인 정적 메서드를 제공
원시값과 래퍼 객체
- 원시값은 객체가 아닌데, 마치 객체처럼 동작한다.
- 원시값에 객체처럼 마침표 표기법(혹은 대괄호 표기법)으로 접근하면 자바스크립트 엔진이 일시적으로 객체로 변환해준다. 이후 다시 원시값으로 되돌린다.
- 객체처럼 접근하면 생성되는 임시 객체를 래퍼 객체라고 한다.
- 식별자가 원시값으로 되돌아가면 래퍼 객체는 가바지 컬렉션의 대상이 된다.
- ES6에 도입된 심벌 객체도 래퍼 객체를 생성하지만, 심벌은 Symbol 함수를 통해 생성하므로 원시값과는 차이가 있다.
전역 객체
- globalThis는 ES11에 도입된 것으로 전역 객체를 가리키는 다양한 식별자를 통일한 식별자.
- 전역 객체는 다양한 표준 빌트인 객체와 var키워드로 선언한 전역 변수와 전역 함수를 프로퍼티로 갖는다.
- 최상위 객체다.
- 전역 객체는 개발자가 의도적으로 생성할 수 없다.
- 전역 객체의 프로퍼티를 참조할 때 window(또는 global) 생략 가능.
- 선언하지 않은 변수를 할당한 암묵적 전역은 전역 객체의 프로퍼티가 된다.
빌트인 전역 프로퍼티
- Infinity 무한대를 나타냄
- NaN
- undefined
빌트인 전역 함수
- eval()
- 문자열을 인수로 전달받고, 문자가 표현식이라면 런타임에 평가한 값을, 문이라면 문자열 코드를 런타임에 실행한다.
- 기존의 스코프를 동적으로 수정한다
- 사용자로 부터 입력받은 콘텐츠를 실행시켜 보안에 매우 취약 절대 사용 금지
- 자바스크립트 엔진 최적화가 수행되지 않아서 느리다.
- isFinite() 유한수 인지 검사. isFinite(null)은 true값이다.
- isNaN() 숫자타입으로 변환 후 NaN인지 검사
- parseFloat 실수로 해석
- parseInt 정수로 해석
- encodeURI / decodeURI 와 encodeURIcomponent / decodeURIcomponent
- 컴포넌트는 =, ?, &까지 인코딩 한다.
- encodeURI / decodeURI 는 =, ?, &을 인코딩 하지 않는다.
- 이스케이프 처리는 네트워크를 통해 정보를 공유할 때 어떤 시스템에서도 해석할 수 있게 아스키 문자 셋으로 변환하는 것
- 인코딩은 URI 문자들을 이스케이프 처리하는 것
암묵적 전역
- 선언하지 않은 변수를 할당하는 것
- 선언하지 않은 변수는 전역 객체의 프로퍼티가 된다.
- 변수는 선언 없이 전역 객체의 프로퍼티로 추가된 것일 뿐이다. 따라서 변수가 아니므로 변수 호이스팅이 발생하지 않는다.
'기술 서적 > 하루 30분 모딥다' 카테고리의 다른 글
하루 30분 모던 자바스크립트 딥 다이브 실행 컨텍스트 1 (0) | 2023.07.05 |
---|---|
하루 30분 모던 자바스크립트 딥 다이브 this (0) | 2023.07.04 |
하루 30분 모던 자바스크립트 딥 다이브 프로토타입3 (0) | 2023.06.27 |
하루 30분 모던 자바스크립트 딥 다이브 프로토타입2 (0) | 2023.06.26 |
하루 30분 모던 자바스크립트 딥 다이브 프로토타입1 (0) | 2023.06.22 |