1. primitive type variable
다음 범주에 들어가는
Boolean, null, undefined, String, Number , Symbol등이 있는데
이중에서 보통 다루는 것은 Boolean, Number, String이다.
2. Object Type
Primitive type의 여집합은 모두 Object Type이다.
3. Diagram
4. 그래서 어쩌라고?
두 Data type의 미묘한 차이만 짚고 넘어가면된다.
C가 친숙한 사람들에겐 이렇게 설명하면 쉽다.
Primitive type 은 값을 담는 일반 변수
Object type은 포인터 변수
반은 맞고 반은 틀린설명이다
Javascript에서의 Object type은 Heap 영역의 주소만 가리킨다.
자바스크립트 엔진은 오브젝트가 가지고 있는(가리키는) 힙 영역의 메모리 주소를 이용해서 변수의 값에 접근한다.
또한 C와는 달리 String의 길이가 가변적이지만 원시타입으로 취급하여 일반변수로 취급한다.
(Stack, Code 영역의 메모리까지 컨트롤하는 C, C++과는 약간 다르다.)
따라서 new 생성자로 Object 생성시 Heap영역에 해당 오브젝트를 가리키는 메모리가 할당된다.
5. 간단한 예제
a는 Stack, b는 Heap 영역에 할당되어있다.
※ Primitive Data Type Varaible can be changed to Object type when it uses property or method
ex.
prim_data 의 값은 10으로 함수 호출 이후에도 변경 X
obj_data.name값은 변경 됨.("아무거나" -> "히히힛")
이 예제만봐도 Call by Value, Reference가 떠오르지 않는가?
6. Refference
https://codeburst.io/javascript-essentials-types-data-structures-3ac039f9877b
'Web > Javascript' 카테고리의 다른 글
Javascript Prototype (0) | 2020.01.24 |
---|---|
JavaScript constructor, instanceof (0) | 2020.01.24 |
Error : Property 속성 이름에 '/'가 포함된 경우 (0) | 2020.01.17 |
async / await Function (0) | 2020.01.15 |
객체의 뽀개기2 (0) | 2019.10.17 |