원시 데이터 타입
객체가 아닌 데이터 타입을 원시 데이터 타입(primitive type)이라고 한다. 다음 데이터 타입들이 원시 데이터 타입이다.
- 숫자
- 문자열
- 불리언(true/false)
- null
- undefined
- Symbol
참조 데이터 타입 (객체)
자바스크립트에서 참조 데이터 타입은 객체(Object)를 의미한다.
변수에 직접 값을 저장하는 것이 아니라, 메모리에서 객체가 저장된 위치를 가리키는(reference) 값으로 할당되기 때문에 "참조(reference) 데이터 타입"이라고 한다.
배열(array), 함수(function)도 객체의 일종이다.
Wrapper 객체
원시 데이터 타입이지만 데이터를 사용할때 편리한 기능을 객체지향적으로 제공하기 위해, 원시 데이터 타입을 객체처럼 다룰 수 있도록 하는 레퍼 객체(Wrapper object)를 제공한다. 원시 데이터 타입을 감싸서 속성과 메소드를 사용할 수 있도록 하기 때문에 레퍼라고 한다.
레퍼 객체로는 String, Number, Boolean이 있다.
아래 str.length처럼 문자열과 관련된 속성을 얻거나 str.charAt(0)처럼 문자열 메소드를 실행하고자 할 때 자바스크립트는 임시로 문자열 객체(레퍼 객체)를 만들고, 문자열 객체의 프로퍼티와 메소드를 사용하여 작업한다.
let str = 'hello';
console.log(str.length); // 5
console.log(str.charAt(0)); // 'h'
사용이 끝나면 레퍼 객체를 제거하기 때문에 str에 임의의 속성을 할당하여도 할당하는 작업이 끝난 이후 다시 속성을 조회하려고 하면 undefined가 된다.
str.prop = 'world';
// prop이라는 속성이 저장된 str 객체는 여기에 존재하지 않는다.
console.log(str.prop); // undefined
'언어 > Javascript & Typescript' 카테고리의 다른 글
[JS] 얕은 복사 & 깊은 복사 (0) | 2024.05.01 |
---|---|
[JS] 복제, 참조 그리고 함수의 매개변수 (0) | 2024.05.01 |
[JS] 자바스크립트 표준입력, 정규표현식, 2차원 배열 (0) | 2023.07.10 |