48. 프리미티브 값, 프리미티브 타입, 프리미티브 값 구하기
프리미티브 값
Primitive Value
- 언어에 있어 가장 낮은 단계의 값
- var book = “책”;
“책”은 더 이상 분해, 전개 불가
window.onload = function () {
"use strict"
debugger;
var book = "책";
var point = 123;
/*
1. 오른쪽 local의 book을 보면
- 값으로 단지 "책"만 갖고 있습니다.
2. point 도 마찬가지입니다.
3. 이것이 프리미티브 값입니다.
*/
var obj = { book: "책" };
/*
4. obj 를 펼치면 다른 프로퍼티들이 있습니다.
- obj 는 프리미티브가 아닙니다.
*/
var instance = new Number(456);
/*
5. 인스턴스의 프리미티브 값 형태
*/
}
book 변수를 더 이상 전개할 수 없습니다.
point 변수도 마찬가지로 전개할 수 없습니다.
위와 같은 형태는 프리미티브 값을 제공하지 않는 형태입니다.
인스턴스 또한 Object 와 비슷하게 프리미티브 값을 제공하지 않는 형태입니다.
하지만 위에 보시면 뭔가 시멘틱 적으로 프리미티브 값이라고 암시하는 것이 있습니다.
[[primitiveValue]] : 456
new Number(456) 에서 456 이라는 primitive 값이 파라미터로 들어갑니다.
그럼 { key : value } 형태로 저장을 해야되는데, key 가 없으므로 자바스크립트 엔진에서 자동으로 key 를 생성한 것입니다.
[[primitiveValue]] 대괄호 두개가 바로 자바스크립트 엔진이 만들었다는 뜻입니다.
프리미티브 타입
- Number, String, Boolean : 인스턴스 생성 가능
- Null, Undefined : 인스턴스 생성 불가
- Object 는 프리미티브 값을 제공하지 않음
인스턴스의 프리미티브 값
var obj = new Number(123);
- 인스턴스를 생성하면
- 파라미터 값을 인스턴스의 프리미티브 값으로 설정
프리미티브 값을 갖는 오브젝트 [[]]
Boolean, Date, Number, String
var obj = new Number(123); // [[primitiveValue]] : 123 console.log(obj + 200); // 323
- new Number(123) 로 인스턴스를 생성하여 obj에 할당한 후 obj에 값을 더하면 값이 더해집니다.
- obj가 인스턴스이므로 값을 더할 수 없는데 값이 더해지는 것은
- 123을 인스턴스의 프리미티브 값으로 설정하기 때문입니다.
- 프리미티브 값을 갖는 인스턴스에 값을 더하면 인스턴스의 프리미티브 값에 값을 더합니다.
valueOf()
구분 | 데이터(값) |
---|---|
data | Number 인스턴스, 숫자 |
파라미터 | 사용하지 않음 |
반환 | 프리미티브 값 |
Number 인스턴스의 프리미티브 [[]] 값 반환
var obj = new Number("123"); console.log(obj.valueOf()); // 123
- obj의 프리미티브 값을 반환합니다.