들어가기 전에
자바스크립트 객체의 분류
1. 표준 빌트인 객체
2. 호스트 객체
- 자바스크립트 실행 환경에서 추가로 제공하는 객체
3. 사용자 정의 객체
표준 빌트인 객체
- 인스턴스를 생성할 수 있는 생성자 함수 객체
- Math. Reflect, JSON 제외한 모든 객체
- 프로토타입 메서드와 정적 메서드 제공
- 생성한 인스턴스의 프로토타입은 표준 빌트인 객체의 prototype 프로퍼티에 바인딩된 객체이다.
const strObj = new String('Lee');
console.log(typeof strObj);
console.log(Object.getPrototype(strObj) === String.prototype);
const numObj = new Number(1.5);
console.log(numObj.toFixed());
console.log(Number.isInteger(0.5));
- 생성자 함수 객체가 아닌 객체
- Math. Reflect, JSON 객체
- 정적 메서드만 제공
정적 메서드
인스턴스 없이 정적으로 호출할 수 있는 메서드
원시값과 래퍼 객체
래퍼 객체
- 원시 타입의 값에 대해 객체처럼 접근하면 생성되는 임시 객체
- JS 엔진이 암묵적으로 연관된 객체를 생성하여
생성된 객체로 프로퍼티나 메서드에 접근한 후, 다시 원시값으로 되돌림
const str = 'hi';
console.log(str.length);
console.log(str.toUpperCase());
console.log(typeof str);
- 문자열, 숫자, 불리언, 심벌은 래퍼 객체에 의해 객체처럼 사용 가능
- 표준 빌트인 객체인 String, Number, Boolean, Symbol의 프로토타입 메서드 / 프로퍼티 참조 가능
- 생성자 함수를 사용하여 인스턴스를 생성할 필요 X
전역 객체
- 코드 실행 전, JS 엔진에 의해 어떤 객체보다 먼저 생성되는 최상위 객체
- JS 환경에 따라 이름 상이함
- 브라우저: window(or self, this, trames)
- Node.js: global
+ globalThis(ES11): ECMAScript 표준 사양을 준수하는 모든 환경에서 사용가능한 식별자
- 개발자가 의도적으로 생성할 수 X
- 전역 객체의 프로퍼티를 참조할 때, window or global 생략 가능
- 브라우저 환경의 모든 JS 코드는 하나의 전역 객체를 공유
- 빌트인 전역 프로퍼티: 전역 객체의 프로퍼티
1. Infinity
- 무한대를 나타내는 숫자값
- -Infinity도 존재
2. NaN
- 숫자가 아님을 나타내는 숫자값
- Not-a-Number
3. undefined
- 빌트인 전역 함수: 전역 객체의 메서드
1. eval
- JS 코드를 나타내는 문자열을 인수로 전달 받음
- 주어진 문자열 코드를 런타임에 평가 또는 실행
- 기존 스코프를 런타임에 동적으로 수정
- 객체와 함수 리터럴은 반드시 괄호로 둘러싼다.
- JS 엔진에 의해 최적화 수행 X -> 처리 속도 느림
- 사용 금지....
const o = eval('({ a : 1})');
console.log(o);
2. isFinite
- 전달받은 인수가 정상적인 유한수인지 검사하여 불리언 타입으로 반환
- 숫자로 자동 타입 변환 실행됨
3. isNaN
- 전달받은 인수가 NaN인지 검사하여 불리언 타입으로 반환
- 숫자로 자동 타입 변환 실행됨
그외
- parseFloat
- parseInt
- encodeURI / decodeURI