1. 자바스크립트 객체의 분류
- 표준 빌트인 객체
- ECMAScript 사양에 정의된 객체이며, 자바스크립트 실행환경과 상관없이 언제나 사용할 수 있다.
- 별도의 선언 없이 전역 변수처럼 언제나 참조할 수 있다.
- 호스트 객체
- 클라이언트 사이드 Web API를 호스트 객체로 제공하고, Node.js 환경에서는 고유의 API를 호스트 객체로 제공한다.
- 사용자 정의 객체
- 기본 제공되는 객체가 아닌 사용자가 직접 정의한 객체
2. 표준 빌트인 객체
- 자바스크립트는 40여 개의 표준 빌트인 객체를 제공한다.
- Math.Reflect, JSON을 제외한 표준 빌트인 객체는 모두 인스턴스를 생성할 수 있는 생성자 함수 객체다.
- 표준 빌트인 객체는 프로토타입 메서드와 정적 메서드를 제공하고 생성자 함수 객체가 아닌 표준 빌트인 객체는 정적 메서드만 제공한다.
const strObj = new String('Lee');
console.log(Object.getPrototypeOf(strObj) === String.prototype)
3. 원시값과 래퍼 객체
cosnt str = 'hello';
console.log(str.length);
console.log(str.toUpperCase());
원시값을 객체처럼 사용하면 자바스크립트 엔진은 암묵적으로 연관된 객체를 생성하여 생성된 객체로 프로퍼티에 접근하거나 메서드를 호출하고 다시 원시 값으로 되돌린다.
래퍼 객체
: 문자열, 숫자, 불리언 값에 대해 객체처럼 접근하면 생성되는 임시 객체
그 후, 래퍼 객체의 처리가 종료되면 래퍼 객체의 원시값으로 원래의 상태, 즉 식별자가 원시값을 갖도록 되돌리고 래퍼 객체는 가비지 컬렉션의 대상이 된다.
- null, undefined는 래퍼 객체를 생성하지 않는다. -> 객체처럼 사용하면 에러가 발생한다.
4. 전역 객체
전역 객체
: 코드가 실행되기 이전 단계에 자바스크립트 엔진에 의해 어떤 객체보다도 먼저 생성되는 특수한 객체이며, 어떤 객체에도 속하지 않은 최상위 객체다.
브라우저 환경
에서는 window, Node.js 환경
에서는 global가 전역 객체를 가리킨다.
- 전역 객체는 계층적 구조상 어떤 객체에도 속하지 않은 모든 빌트인 객체의 최상위 객체다.
전역 객체의 특징
- 전역 객체는 개발자가 의도적으로 생성할 수 없다.
- 전역 객체의 프로퍼티를 참조할 때 window or global를 생략할 수 있다.
- 모든 표준 빌트인객체를 프로퍼티로 가지고 있다.
- 자바스크립트 실행 환경에 따라 추가적으로 프로퍼티와 메서드를 갖는다.
- 브라우저, Node.js 환경에서 고유의 호스트 객체로 제공
- var 키워드로 선언한 전역 변수와 선언하지 않은 변수에 값을 할당한 암묵적 전역. 그리고 전역 함수는 전역 객체의 프로퍼티가 된다.
- let ,const 키워드로 선언한 전역 변수는 전역 객체의 프로퍼티가 아니다. 즉, window, 등으로 접근할 수 없다.
- 브라우저 환경의 모든 자바스크립트 코드는 하나의 전역 객체 window를 공유한다.
빌트인 전역 프로퍼티
빌트인 전역 함수
- eval
- isNaN
- parseFloat
- encodeURI / decodeURI
- encodeURIComponent / decodeURIComponent