728x90
[Javascript] 데이터 타입_원시(Prototype) 데이터 타입과 객체 데이터 타입
데이터 타입
데이터 타입은 크게 객체와 객체가 아닌 것으로 나눌 수 있다.
원시(기본) 데이터 타입
- 숫자
- 문자열
- 불리언 (true/false)
- null
- undefined
객체(참조) 데이터 타입
명시적으로 객체 데이터 타입이라 잘 얘기하진 않지만.. 원시 데이터 타입과 반대되는 개념이다.
아래의 예에서 str은 문자열임에도 객체와 같이 적용되었다.
str.length의 '.' 점은 Object Acess Operator이다. 즉 점 앞에 객체가 있다는 얘기다.
var str = 'coding';
// str = new String('coding');
console.log(str.length); // 6
console.log(str.charAt(0)); // "c"
이것은 자바스크립트가 자동으로 원시 데이터를 객체처럼 사용하게 하기 위해 레퍼 객체(wrapper object)를 생성하기 때문이다.
그래서 실제로 str = new String('coding')과 같이 객체로 감싸고, 그 코드가 종료되면 다시 원시 데이터 타입으로 변경한다.
var str = 'coding';
// str = new String('coding');
str.prop = 'everybody'; // error가 나지 않음. 레퍼 함수에 의해 객체화 되어서
console.log(str.prop); // undefined. 다시 원시 데이터화 됨
레퍼 객체 종류
- 숫자 -> Number
- 문자열 -> String
- 불리언 (true/false) -> Boolean
- null -> x
- undefined -> x
728x90
'프로그래밍 > Javascript & React' 카테고리의 다른 글
[Javascript] 실행 컨텍스트(Execution Context) (0) | 2022.01.18 |
---|---|
[Javascript] Arrow function는 뭐? 왜 쓰는데? (0) | 2022.01.16 |
[Javascript] this 용법 정리 (0) | 2022.01.16 |
[Javascript] 프로토타입(Prototype), 그래서 왜 쓰는데? (0) | 2022.01.15 |
[Javascript] 생성자 함수(클래스), 객체와 객체 지향 프로그래밍 OOP(Object Oriented Programming) (0) | 2022.01.15 |
댓글