자바스크립트에서는 현재 아래의 6개의 primitive 타입을 제공하며, primitive는 원시 데이터 타입을 의미한다.
- undefined
- null
- boolean
- number
- string
- symbol (ECMAScript 2015에서 신규로 추가)
ECMAScript 표준에서 제공하는 자료형은 다음을 포함한다.
- 6개의 primitive 타입
- Object 객체
Primitive 객체
null, undefined를 제외한 아래의 primitive 타입은 원시 값을 래핑한 객체를 같는다.
- boolean -> Boolean
- number -> Number
- string -> String
- symbol -> Symbol
래퍼객체는 valueOf()
메소드를 이용하여 primitivie 값을 리턴한다.
let num1 = new Number(100);
let num2 = num1; // num1의 참조가 전달된다.
console.log(num1 === num2); // true
let num3 = 100;
console.log(num2 === num3); // false
console.log(num2 == num3); // true
num2 = num2 + 100; // num2.valueOf() + 100 으로 연산이 수행되어 연산 결과 primitivie 값이 저장된다.
num3 = num3 + 100;
console.log(num2 === num3); // true
console.log(num2 == num3); // true
Object.isExtensible()
property를 생성할 수 있는 지에 대한 여부를 확인할 수 있는 메서드이다.
let obj = {};
let str = 'aaa';
console.log(Object.isExtensible(obj)); // true
console.log(Object.isExtensible(str)); // false
래퍼 객체로의 형변환
자바스크립트의 primitive는 암묵적으로 프리미티브 객체로 형변환이 일어난다. 그러므로 예를 들어 Number
객체를 이용하여 생성하지 않아도 Number
객체 생성자의 property를 사용할 수 있다.
let num = 10.12345;
typeof num; // number
num.toFixed(2); // 10.12