진취적 삶
21 빌트인 객체 본문
21.1 js 객체의 분류
- 표준 빌트인 객체 :ECMAScript 사양에 정의된 객체 js 실행환경과 관계없이 언제나 사용가능
- 호스트 객체: ECMAScript 정의되어있지 않지만 js 실행환경에서 추가로 제공하는 객체
- 사용자 정의객체 : 표준 빌트인 객체와 호스트 객체 처럼 기본 제공되는것이 아니라 사용자가 직접 정의한 객체
21.2 표준 빌트인 객체
Object ,String,Number 등등 40여개의 빌트인 객체 제공
Math, Reflect, JSON 을 제외한 표준빌트인 객체는 모두 인스터스를 생성할수 있는 생성자 함수 객체
21.3 원시값과 래퍼 객체
원시값이 있는데도 String,Number, Boolean을 사용하는 이유는 ?
원시값을 객체처럼 사용하면 js엔진은 암묵적으로 연관된 객체를 생성하여 생성된 객체로 프로퍼티에 접근하거나 메서드를 호출하고 다시 원시값으로 돌린다.
래퍼객체 : 문자열 ,숫자 ,불리언 값에 대해 객체처럼 접근하며 생성되는것
const str ='hello'
console.log(str.length)
console.log(str.toUpperCase())
21.4 전역 객체
코드가 실행되기 이전 단계의 js 엔진에 의해 어떤 객체보다도 먼저 생성되는 특수한 객체
전역 객체는 어떤 객체에도 속하지 않은 모든 빌트인 객체의 최상위 객체이다 .
21.4.1 빌트인 전역 프로퍼티
전역 객체의 프로퍼티를 의미한다.
Infinity: 무한대를 나타내는 숫자값
NaN : Not a Nubmer 숫자가 아님
undefined : 정의되지 않음
21.4.2 빌트인 전역 함수
애플리케이션 전역에서 호출할수 있는 빌트인 함수
eval : 문자열을 인수로 전달받아서 런타임에 평가하여 실행하도록
eval 함수는 기존의 스코프를 런타임에 동적으로 수정한다.
eval 함수는 보안에 매우 취약 쓰지 말아야함 .
console.log(eval("1+2;"));
console.log(eval("({a:1})"));
isFinite
전달받은 인수가 정상적인 유한수 있지 검사해서 정상 true 무한수이면 false 반환
NaN으로 평가되면 false 반환
isFinite(null) => 0
isFinite(infinity) => false
isFinite(Nan) => false
null 은 0 으로 반환 null 숫자로할때 0 이된다 .
isNaN
전달 받은 인수가 NaN 이면 true
isNaN(undefined) true
isNaN(null) false
ParseInt
전달받은 문자열 인수를 정수로 해석
console.log(parseInt("10"));
//10을 8진수로 해석하고 그 결과를 10진수로
console.log(parseInt("10", 8));
//10을 16진수로 해석하고 그결과를 16진수로
console.log(parseInt("10", 16));
const x = 15;
console.log(x.toString(2)); //1111
//1111을 2진수로 해석하고 그값을 10진수로 바꾼다
console.log(parseInt(x.toString(2), 2)); //15
console.log(x.toString(8)); //17
console.log(parseInt(x.toString(8), 8)); //15
encodeURI : 완전한 URI 를 문자열로 전달받아 이스케이프 처리를 위해 인코딩한다.
인코딩: URI 문자들을 이스케이프 처리하는것을 의미한다.
이스케이프 처리: 네트워크를 통해 정보를 공유할 때 어떤 시스템에서도 읽을 수있는 아스키 문자 셋으로 변화하는것
decodeURI : 인코딩된 URI 를 인수로 전달받아 이스케이프 처리 이전으로 디코딩
const uri = "<https://sports.news.naver.com/news?oid=047&aid=0002387143>";
const enc = encodeURI(uri); //https://sports.news.naver.com/news?oid=047&aid=0002387143
console.log(enc);
const dec = decodeURI(enc); //https://sports.news.naver.com/news?oid=047&aid=0002387143
console.log(dec);
var x = 10; //전역 변수
function foo() {
//선언하지 않은 식별자에 값을 할당
y = 20;
console.log(x + y);
}
foo();
console.log(window.x); //10
console.log(window.y); //20
delete x;
delete y;
console.log(window.x); //10
console.log(window.y); //undefined
'개발 도서 > 자바스크립트 deepdive' 카테고리의 다른 글
29 Math (0) | 2023.07.12 |
---|---|
30 Date (0) | 2023.07.12 |
22 this (0) | 2023.07.12 |
23 실행 컨텍스트 (0) | 2023.07.12 |
24 클로저 (0) | 2023.07.12 |