객체의 분류
전역 객체 : 최상위 객체
표준 빌트인 객체 : ECMAScript 사양에 정의된 객체, 실행환경 무관
호스트 객체 : 실행 환경에서 추가적으로 제공하는 객체
사용자 정의 객체 : 사용자가 정의한 객체
전역 객체
모든 빌트인 객체의 최상위 객체
객체의 계층적 구조 상 표준 빌트인 객체와 호스트 객체를 프로퍼티로 갖는다
특징
전역 객체는 개발자가 의도적으로 만들 수 없다. (생성자 함수 제공X)
전역 객체의 프로퍼티 참조시 window(또는 global) 생략 가능
1
console.log(window.parseInt === parseInt); // true
전역 프로퍼티 : Infinity, NaN, undefined
전역 함수
eval : 코드를 런타임에 동적으로 평가 및 실행
isFinite : 유한수인지 검사 후 불리언 타입으로 반환
isNaN : 전달 값을 숫자로 타입 변환 후 NaN인지 검사하여 불리언 타입으로 반환
parseFloat : 문자열을 부동소수점 숫자로 바꾼 후 반환
parseInt : 문자열을 정수형 숫자로 해석 후 반환
encodeURI : URI의 문자들을 이스케이프 처리함
decodeURI : 인코딩된 URI을 전달받아 이스케이프 처리되기 이전으로 디코딩
1
2
3
4
5
6
7
8
9
10
11const uri = "http://example.com?name=이웅모&job=programmer&teacher";
// encodeURI 함수는 완전한 URI를 전달받아 인코딩하여 이스케이프 처리한다.
const enc = encodeURI(uri);
console.log(enc);
// http://example.com?name=%EC%9D%B4%EC%9B%85%EB%AA%A8&job=programmer&teacher
// decodeURI 함수는 인코딩된 완전한 URI를 전달받아 이스케이프 처리되기 이전으로 디코딩한다.
const dec = decodeURI(enc);
console.log(dec);
// http://example.com?name=이웅모&job=programmer&teacher
encodeURIComponent :
URI의 구성요소인 쿼리 파라미터의 일부 간주하고 쿼리 파라미터 구분자로 사용되는 =, ?, &를 인코딩한다decodeURIComponent :
쿼리 파라미터 일부를 다시 디코딩한다1
2
3
4
5
6
7
8
9
10
11
12// URI의 쿼리 파라미터
const uriComp = "name=이웅모&job=programmer&teacher";
// encodeURIComponent 함수는 매개변수로 전달된 문자열을 URI의 구성요소인 쿼리 파라미터의 일부 간주한다.
// 따라서 쿼리 파라미터 구분자로 사용되는 =, ?, &를 인코딩한다.
let enc = encodeURIComponent(uriComp);
console.log(enc);
// name%3D%EC%9D%B4%EC%9B%85%EB%AA%A8%26job%3Dprogrammer%26teacher
let dec = decodeURIComponent(enc);
console.log(dec);
// 이웅모&job=programmer&teacher
암묵적 전역
스코프 체인을 통해 선언된 변수를 찾을 수 없을 때
window.변수=할당값
으로 해석하여 전역변수처럼 동작하는 것
단 변수가 아니기 때문에 호이스팅이 발생하지 않고 delete 삭제할 수 있다1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24// 전역 변수 x는 호이스팅이 발생한다.
console.log(x); // undefined
// 전역 변수가 아니라 단지 전역 객체의 프로퍼티인 y는 호이스팅이 발생하지 않는다.
console.log(y); // ReferenceError: y is not defined
var x = 10; // 전역 변수
function foo() {
y = 20; // 선언하지 않은 식별자에 값을 할당
console.log(x + y);
}
foo(); // 30
// 선언하지 않은 식별자 y를 전역에서 참조할 수 있다.
console.log(x + y); // 30
console.log(window.x); // 10
console.log(window.y); // 20
delete x; // 전역 변수는 삭제되지 않는다.
delete y; // 프로퍼티는 삭제된다.
console.log(window.x); // 10
console.log(window.y); // undefined
표준 빌트인 객체
생성자 함수 객체: String, Number, Boolean, Function, Array, Date 등
생성자 함수가 아닌 객체: Math, Reflect, JSON
래퍼 객체
문자열, 숫자, 불리언 값에 대해 객체처럼 접근하면 생성되는 임시 객체
래퍼 객체의 처리 종료 후 원시값을 되돌리고 가비지 컬렉션 대상이 된다1
2
3
4
5
6
7
8const str = "hi";
// 원시 타입인 문자열이 레퍼 객체인 String 인스턴스로 변환된다.
console.log(str.length); // 2
console.log(str.toUpperCase()); // HI
// 레퍼 객체로 프로퍼티 접근이나 메소드 호출한 후, 다시 원시값으로 되돌린다.
console.log(typeof str); // string
If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !