ECMAScript 사양에 정의된 객체로 실행환경에 관계없이 언제나 사용가능하다.
전역객체의 프로퍼티로 제공되기 때문에 별도의 선언없이 전역변수처럼 참조할 수 있다.
ex) Object, String,Number,Boolean,Symbol,Date,Math,RegExp,Array.... 40여개
Math,Reflect,JSON을 제외한 표준 빌트인 객체들은 인스턴스를 생성할 수 있는 생성자함수 객체
인스턴스를 생성할 수 있는 빌트인 객체들은 인스턴스 메서드, 정적메서드 모두 제공한다.
const numObj = new Number(10);
console.log(numObj.toFixed(2)); // 인스턴스 메서드
console.log(Number.isInteger(numObj)); // 정적 메서드
자바스크립트 실행환경에 따라 추가로 제공되는 객체이다.
브라우저 - DOM,BOM,fetch,XMLRequest... 같은 클라이언트 사이드 WEB API
node.js - Nodejs 고유의 API
사용자가 직접 정의한 객체를 말한다.
JS의 원시값들은 래퍼객체 의해서 자신의 타입과 관련된 객체로 일시적으로 변한 후 해당 객체의 프로퍼티나 메서드에 접근할 수 있다. 호출이 끝나면 다시 원시값으로 돌아온다.
래퍼객체
원시값들이 마침표 표기법을 사용해 객체처럼 접근할 경우 원시값에 일시적으로 해당 타입의 객체를 덮어 씌워주는 객체
const str = "hello";
console.log(str.length); // new String(str).length
console.log(str.toUpperCase());
래퍼 객체가 생성되면 래퍼객체인 String 생성자 함수의 인스턴스가 생성되고
문자열은 래퍼객체의 [[StingData]] 내부 슬롯에 할당된다.
이후 객체 처리가 종료되면 [[StringData]]안에 할당된 원시값으로 되돌아가고 해당 래퍼 객체는 가비지 컬렉션의 대상이 된다.
예시를 보자
//number 타입 원시값
const num = 1.5;
// Number 래퍼객체에 의해 인스턴스 생성되고 [[NumberData]]안에 원시값 할당
console.log(num.toFixed(4)); // 1.5000
// 객체 처리가 종료되어 래퍼객체는 가비지 컬렉션의 대상이되며
// num은 다시 원시타입과 값으로 돌아간다.
console.log(typeof num, num); // number, 1.5
코드가 실행되기 이전에 JS 엔진에 의해 어떤 객체보다도 먼저 생성되는 특수한 객체이며 최상위 객체이다.
전역 객체의 프로퍼티와 메서드는 전역객체를 가리키는 식별자(window/global)을 생략하고 사용가능하다.
즉, 전역변수, 전역함수처럼 사용이 가능하다.
빌트인 전역 프로퍼티란 전역 객체의 프로퍼티를 의미한다.
console.log(window.Infinity);
console.log(typeof Infinity);
console.log(window.NaN);
console.log(typeof NaN);
console.log(window.undefined );
console.log(typeof undefined);
빌트인 전역 함수는 전역객체의 메서드를 말한다.
eval : 자바스크립트 코드를 나타내는 문자열을 인수로 받는다.
isFinite: boolean 타입을 반환한다. 전달받은 값이 숫자가 아니면 숫자로 변환후 검사
isNaN: boolean 타입을 반환한다. 전달받은 값이 숫자가 아니면 숫자로 변환후 검사
parseFloat: 전달받은 문자열을 실수로 해석해 반환한다.
첫번째 문자열이 숫자로 반환할 수 없으면 NaN 반환
parseInt: 전달받은 문자열을 정수로 해석해 반환한다.
첫번째 문자열이 해당 지수의 숫자로 변환될 수 없다면 NaN 반환
두번째 인수로 진수(2~36)를 전달 할 수 있다. 반환값은 언제나 10진수이다.
참고) 10진수 -> 나머지 진수로 변환하는 법은 toString() 메서드를 사용하면 된다.
console.log(parseFloat(3.15)); //3.15
console.log(parseFloat("34 35 44")); // 34
console.log(parseFloat("hi 40")); // NaN
console.log(parseInt(10.234)); //10
console.log(parseInt(10, 2)); // 10을 2진수로 보고 10진수로 변환
const x = 10;
console.log(parseInt(x.toString(2), 2)); // 10
console.log(parseInt("AC")); // NaN