반응형
데이터 타입은 크게 두가지로 나뉠 수 있다.
- 원시 데이터 타입 primitive type (기본 데이터 타입)
- 객체 데이터 타입 (참조 데이터 타입)
원시 데이터 타입에는
- 숫자
- 문자열
- 불린(true/false)
- null
- undefined
가 있고 이것 이외에 나머지가 객체 데이터 타입이다.
var str = 'coding';
console.log(str.length); // 6
console.log(str.charAt(0)); // "C"
분명 객체처럼 사용되고 있는데 왜 문자열이 객체가 아니라고 할까? 그이유는 문자열과 관련된 어떤 작업을 하려고 할 떄 자바스크립트는 임시로 문자열을 객체로 만들고 사용이 끝나면 제거하기 때문이다. 이러한 처리는 내부적으로 자동적으로 일어난다. str = new String('conding'); 와 같은 작업이 1행과 2행 사이에 생겨났다고 생각하면 편하다.
var str = 'coding';
str.prop = 'everybody';
console.log(str.prop); // undefined
str.prop을 하는 순간 자바스크립트 내부적으로 String 객체가 만들어진다. prop 프로퍼티는 이 객체에 저장되고 이 객체는 곧 제거 된다. 그렇기 때문에 prop이라는 속성이 저장된 객체는 존재하지 않게 된다. 정의하는 순간만 존재하는 것이다. 원시 데이터 타입을 마치 객체처럼 사용하려 할때 내부적으로 자동으로 만들어지는 객체를 레퍼객체(wrapper object)라고 한다.
반응형
'Programming > JavaScript' 카테고리의 다른 글
복제와 참조 (0) | 2019.12.24 |
---|---|
Object (0) | 2019.12.23 |
표준 내장 객체의 확장 (0) | 2019.12.23 |
Prototype (0) | 2019.12.22 |
상속(inheritance) (0) | 2019.12.21 |