Object,String,Number,Boolean,Symbol,Date,Math ...등등
Math,Reflect,JSON을 제외한 모든 빌트인 객체는 인스턴스를 생성할 수 있는 생성자 함수 객체이다.
표준 빌트인 객체가 생성한 인스턴스의 프로토타입은 해당 빌트인 객체의 prototype프로퍼티에 바인딩된 객체이므로, 다양한 프로토타입 메서드를 상속받아 사용 가능
표준 빌트인 객체는 정적 메서드도 있다, 인스턴스 없이 호출 가능
문자열, 숫자, 불리언 값에 객체처럼 접근을 하면 임시적으로 생성되는 객체
const str = 'hello';
// 문자열에 .length로 객체처럼 접근하게 되면 String 생성자 함수의 인스턴스가 생성되고
// 문자열 값은 그 래퍼객체의 [[StringData]] 내부 슬롯에 할당
console.log(str.length); // 5
console.log(str.toUpperCase()); // HELLO
console.log(typeof str); // 원시값 그대로 돌아오고 래퍼객체는 가비지 컬렉션의 대상
const str = 'John';
str.age = 20; //래퍼 객체가 생성되고 해당 객체에 age라는 프로퍼티 동적 할당
//str은 본래 원시값으로 돌아가고 생성된 래퍼 객체는 가비지 컬렉션의 대상
//객체처럼 접근했으니 또 새로운 래퍼 객체가 생성된다
// 해당 객체에 name이라는 프로퍼티는 없으니 undefined
console.log(str.name); //undefined
// 또다시 원시값으로 돌아가고 방금 생성된 래퍼 객체는 가비지 컬렉션의 대상
String,Number,Boolean 생성자 함수를 new와 함께 호출하여 인스턴스를 생성할 필요가 없다
래퍼객체가 일시적으로 생겨서 필요한 프로퍼티를 참조할 수 있기 때문에
null과 undefined는 래퍼 객체가 생성되지 않음
런타임 이전에 가장 먼저 생성되는 최상위 객체
브라우저에서는 window, node.js에서는 global
globalThis : 실행 환경 상관없이 전역객체를 가르킴, ES11
전역 객체의 프로퍼티 :
전역 객체의 프로퍼티는 참조할 때 window,global 생략 가능
let과 const로 선언한 전역변수는 전역객체의 프로퍼티가 아니다
Infinity를 값으로 갖는다
NaN을 값으로 갖는다
undefined를 값으로 갖는다
인수로 받은 문자열을 자바스크립트 코드로 실행
eval은 사용을 금지
유한수 true, 무한수 false
인수의 타입이 숫자가 아니면 숫자로 타입 변환 후 판단
NaN으로 판단되면 false
인수의 타입이 숫자가 아니면 숫자로 타입 변환 후 판단
문자열 인수를 실수로 해석해 반환
// 공백으로 구분된 문자열은 맨 앞에만
parseFloat('1 2 3'); //1
parseFloat('1 day'); //1
// 맨앞이 숫자로 변환불가시
parseFloat('before 2 days'); // NaN
// 앞,뒤 공백은 무시됨
parseFloat(' 1 '); //1
문자열 인수를 정수로 해석해 반환
parseInt(문자열,진법);
문자열을 진법으로 해석한 결과를 10진수로 반환
진법 생략하면 문자열을 10진수로 해석해서 10진수로 반환
but 문자열이 0x,0X로 시작하면 16진수로 해석되어 10진수로 반환
첫번째 인수로 전달된 문자열이 두번째 인수인 진법으로 해석입 불가하면 NaN
parseInt('2',2); /NaN 2진법에 2는 없음
인수로 받은 문자열의 중간부터 해당 진법으로 해석이 불가하면 직전에 해석된 곳까지 반환
parseInt('1012110',2); // 101까지 2진법으로 해석하면 5, 뒤는 무시
parseFloat이랑 똑같이
공백으로 구분된 문자열은 맨 앞에만
맨앞이 숫자로 변환 불가시 NaN
앞,뒤 공백 무시
인수로 전달받은 URI 문자들을 이스케이프 처리한다
이스케이프 처리 : 문자를 아스키 문자 셋으로 변경
URI는 아스키 문자 셋으로만 구성되어야 한다
쿼리 스트링 문자인 =,?,& 도 인코딩한다
encodeURI는 완전한 URI로 인식하기 때문에 쿼리 스트링은 제외하고 인코딩함
암묵적 전역은 전역 객체의 프로퍼티이지 변수가 아니다
따라서 변수 호이스팅이 발생하지 않는다
전역 변수는 delete연산자로 삭제 불가능
암묵적 전역은 전역 객체의 프로퍼티이므로 delete로 삭제 가능
console.log(x); // undefined 변수 호이스팅
console.log(y); // ReferenceError
var x = 10;
function f(){
y =20;
}
f();
console.log(x+y); // 30
delete x; // 삭제 불가
delete y; // 전역변수가 아니라 프로퍼티 이므로 삭제 가능