자바스크립트에서는 현재 아래의 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

Reference