티스토리 뷰
데이터 타입은 크게 2가지로 구분할 수 있다.
- 원시 데이터 타입(or 기본 데이터 타입, primitive type) - 객체가 아닌 데이터 타입
- 숫자
- 문자열
- 불리언(true/false)
- null
- undefined
- 객체 데이터 타입 (참조 데이터 타입) -원시 데이터 타입 외의 모든 데이터타입은 객체입니다.
래퍼 객체(wrapper object)
-원시데이터가 있을 때 객체처럼 활용할 수 있도록 감싸주는 객체를 wrapper object 라고 합니다. -> 이 작업을 JS가 자동으로 처리해 줍니다.
-원시 데이터는 객체가 아니기 때문에 객체처럼 사용할 수 없습니다. 하지만 wrapper object를 통해서 마치 객체인 것처럼 사용할 수 있게 됩니다.
▶원시데이터 타입 별 래퍼 객체 유/무
- 숫자 -> Number (wrapper 객체를 말하는 것)
- 문자열 -> String (wrapper 객체를 말하는 것)
- 불리언(true/false) -> Boolean (wrapper 객체를 말하는 것)
- null ->X
- e.g.) null.prop = "nothing"; // type error
- undefined ->X , null과 마찬가지
// 원시타입을 넣은 str 변수
const str = "coding";
document.write(str.length, "<br/>");
//String.prototype.charAt(index); index순서에 있는 문자열을 반환
document.write(str.charAt(0), "<br/>"); //output: c
const str1 = "coding";
//객체처럼 prop 속성에 everybody 값 넣기
str1.prop = "everybody";
//str1.prop를 하는 순간 자바스크립트는 내부적으로 String 객체가 만들어진다.
// prop 프로퍼티는 이 객체에 저장되고 객체는 곧 제거 된다.
//그렇기 때문에 prop라는 속성이 저장된 객체는 존재하지 않게 된다.
document.write(str1.prop, "<br/>"); //output: undefined
- 위의 코드에서 문자열은 분명히 프로퍼티와 메소드가 있다. 그렇다면 객체와 왜 다른 것일까?
- 그 이유는 내부적으로 문자열이 원시 데이터 타입이고 문자열과 관련된 어떤 작업을 하려고 할 때 자바스크립트는 임시로 문자열 객체를 만들고 사용이 끝나면 제거하기 때문이다.
- 그렇기 때문에 str1.prop = "everybody"; 라는 값이 String이라는 wrapper 객체 담아지지만 그 작업이 끝나면 객체를 소멸시키기 때문이다. 이러한 특징은 일반적인 객체의 동작 방법과는 다르다.(wrapper객체의 특징) ->원래 원시데이터를 담은 변수로 원상복귀되기 때문에 str1.prop 를 호출했을 때 undefined 라는 결과를 얻게된다.
- 그럼에도 문자열과 관련해서 필요한 기능성을 객체지향적으로 제공해야하는 필요성때문에 원시 데이터형을 객체처럼 다룰 수 있도록 하기 위한 객체를 자바스크립트는 제공하고 있는 것이며 이를 wrapper object라고 부른다.
'Frontend > JavaScript' 카테고리의 다른 글
[생활코딩] JS문법(패턴)- 재귀함수(feat. 노드 종류 API) (0) | 2022.01.22 |
---|---|
[생활코딩] JS문법(객체지향)- 참조 (0) | 2022.01.21 |
[생활코딩] JS문법(객체지향)- Object객체 (0) | 2022.01.19 |
[생활코딩] JS문법(객체지향)- 표준 내장 객체의 확장 (0) | 2022.01.19 |
[생활코딩] JS문법(객체지향)- 상속(inheritance), prototype (0) | 2022.01.17 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- nvm경로 오류
- ~ ^
- 부트캠프항해
- grid flex
- text input pattern
- 항해99추천비추천
- && 셸 명령어
- 원티드 3월 프론트엔드 챌린지
- 항해99프론트
- tilde caret
- 프리온보딩 프론트엔드 챌린지 3월
- 타입스크립트 DT
- getStaticPaths
- 형제 요소 선택자
- reactAPI
- 타입스크립트 장점
- 프리렌더링확인법
- D 플래그
- Prittier
- aspect-ratio
- is()
- 원티드 FE 프리온보딩 챌린지
- 원티드 프리온보딩 프론트엔드 챌린지 3일차
- 틸드와 캐럿
- fs모듈 넥스트
- getServerSideProps
- float 레이아웃
- 원티드 프리온보딩 FE 챌린지
- nvm 설치순서
- 항해99프론트후기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함