JAVASCRIPT

내장 객체 및 생성자

걍가영 2020. 7. 30. 11:33

JSON

직렬화 형식이며, JavaScript 객체와 유사한 표기법을 사용하는 텍스트를 통해 복잡한 자료구조를 나타냄

{
    "key": "value",
    "arr": [1,2,3],
    "nullProp": null
}

직렬화(serialization)

보조기억장치에 저장하거나 혹은 네트워크를 통해 전송하기 위해 저장/전송 가능한 형태로 변환하는것

역직렬화(deserialization)

직렬화된 데이터를 프로그래밍 언어에서 다시 사용할 수 있도록 변환해주는 절차

// `JSON.stringify`로 직렬화 가능
JSON.stringify({
  key: 'value',
  arr: [1, 2, 3],
  nullProp: null,
  undefinedProp: undefined // 값이 `undefined`인 속성은 직렬화 과정에서 제외
}); // '{"key":"value","arr":[1,2,3],"nullProp":null}'

// `JSON.parse`로 역직렬화
JSON.parse('{"key":"value","arr":[1,2,3],"nullProp":null}');

Date

날짜와 시각을 다루기 위한 생성자

  • 협정 세계시 (UTC) : 위치 및 DST의 사용 여부와 상관 없이 같은 기준으로 시각을 다룸
  • 유닉스 시간 : 컴퓨터에서는 시간 데이터를 편하게 다루기 위한 단위

Date 객체의 생성

  • new Date() : 현재 시각을 반환
  • year : 연도를 나타내는 정숫값. 0부터 99는 1900부터 1999로 처리
  • monthIndex : 월을 나타내는 정숫값. 0은 1월을 나타내고 11은 12월을 나타냄
  • day : 일을 나타내는 정숫값. 기본값은 1
  • hours : 시를 나타내는 정숫값. 기본값은 0(자정)
  • minutes : 분을 나타내는 정숫값. 기본값은 0분
  • seconds : 초를 나타내는 정숫값. 기본값은 0초
  • milliseconds : 밀리초를 나타내는 정숫값. 기본값은 0밀리초

Symbol

ES2015 도입된 원시타입이며, 객체의 속성의 키로 사용하기 위해 만들어짐
새로 생서된 심볼은 다른 모든 심볼과 다른 것으로 취급

// 대괄호 표기법을 통해 심볼을 객체의 속성 키로 사용
const mySymbol = Symbol('my symbol');

const obj = {
  [mySymbol]: 'hello'
};

console.log(obj); // { [Symbol(my symbol)]: 'hello' }

Map

객체와 유사하게 키-값 쌍(key-value pair)을 저장할 수 있는 새로운 자료구조 제공

  • Map은 메소드를 통해서 내부의 데이터를 조작
  • 어떤 값이라도 Map 객체의 키로 사용될 수 있음
  • Map 객체 안에 들어있는 데이터는 프로토타입의 영향을 받지 않음
  • size 속성을 통해 내부에 들어있는 데이터의 개수를 쉽게 알 수 있음
const m = new Map();

m.set('hello', 'world');
console.log(m.get('hello')); // 'world'
console.log(m.has('hello')); // true

m.delete('hello');
console.log(m.get('hello')); // undefined
console.log(m.has('hello')); // false

 

Set

집합 형태의 자료구조. 중복된 데이터가 저장되는 것을 허용하지 않음
배열과 유사한 형태의 자료구조가 필요하지만 순서가 중요하지 않고 중복된 데이터의 저장을 허횽하지 않아야 할 경우 사용

const s = new Set();

s.add(1);
s.add(1);
s.add(2);

console.log(s); // Set { 1, 2 }