SPACE RUMI

Hi, I am rumi. Let's Splattack!

[STUDY] 스터디/Deep Dive JS

js의 빌트인 객체 3종류

백루미 2022. 12. 17. 09:40
반응형

표준 빌트인 객체 (Standard built in object)

ECMAScript에 정의된  객체로, 전역객체의 프로퍼티로서 제공된다. 전역변수처럼 언제나 참조 가능
Math, Reflect, JSON을 제외한 표준 빌트인 객체는 모두 생성자 함수 객체다.

 

호스트객체 (Host object)

JS실행환경 (브라우저, Node.js 환경)에서 추가로 제공하는 객체.
브라우저에서는 클라이언트사이드 Web API를 제공하고, Node.js환경에서는 고유의 API를 제공한다.

 

사용자 정의 객체 (user defiend objects)

사용자가 정의한 객체

 

원시값과 객체

원시값은 객체가 아니므로 메서드나 프로퍼티를 가질수없지만,
원시값을 마침표 표기법이나 대괄호 표기법으로 접근하면, 자바스크립트 엔진은 원시값을 연관된 객체로 변환해주기 때문에 객체처럼 동작한다. 그 이후 다시 원시값으로 되돌린다.

const str = "test"

str.length; // 4
str.toUpperCase() // 'TEST'

이처럼 원시값에 객체처럼 접근할때 일시적으로 생성되는 객체를 래퍼객체(Wrapper Object)라고 한다.
이 객체는, 일시적으로 생성된것이므로 다시 원시값으로 되돌릴때 가비지컬렉팅(GC)의 대상이 된다.

*null과 undefiend는 래퍼객체를 생성하지 않는다.

 

전역 객체

전역객체는 모든 빌트인 객체의 최상위객체이며, 빌트인 객체와 호스트객체를 프로퍼티로 갖는다.
전역 객체는 개발자가 의도적으로 생성할수없다.
전역 객체의 프로퍼티를 참조할 때, window를 생략할 수 있다.

window.String('hello') === String('hello') // true

 

var로 선언한 변수는 전역 객체의 프로퍼티이다.
let이나 const로 선언한 변수는 전역 객체의 프로퍼티가 아니다.

var test = 'test'
window.test // 'test'

const test1 = 'test1'
window.test1 // undefiend

let test2 = 'test2'
window.test2 // undefiend

 

빌트인 전역 프로퍼티로는 Infinity, NaN, undefiend, 빌트인 전역 함수로는 eval, isFinite, isNaN, parseFloat, parseInt, encodeURI, decodeURI, encodeURIComponent, decodeURIComponent 가 있다,

encodeURI (모든 문자열을 URI 전체라고 인식하여 이스케이프 처리한다. 쿼리 구분자인 =,?,&은 인코딩하지 않는다.)
encodeURIComponent (URI의 구성요소인 쿼리스트링으로 인식하여 =,?,& 까지 인코딩한다.)

*이스케이프 처리란? 모든 시스템에서 읽을수있도록 아스키문자로 변환해주는것

encodeURI('google.com/search?q=검색') 
//https://www.google.com/search?q=%EA%B2%80%EC%83%89

decodeURI('https://www.google.com/search?q=%EA%B2%80%EC%83%89')
// 'google.com/search?q=검색'
반응형

'[STUDY] 스터디 > Deep Dive JS' 카테고리의 다른 글

js 클래스  (0) 2022.12.31
ES6 함수의 추가기능 / ES6 화살표 함수, ...rest  (0) 2022.12.31
실행 컨텍스트와 클로저  (0) 2022.12.17
js this  (0) 2022.12.17
js strict mode / ESlint  (0) 2022.12.06