Web Storage는 Web API의 일종으로, 브라우저 내에 키-값 쌍을 저장 가능하게 하며, localStorage와 sessionStorage가 있다.
localStorage와 sessionStroage는 동일한 메서드와 프로퍼티를 제공한다.
setItem(key, value)
: 키-값 쌍 보관getItem(key)
: 키에 해당하는 값 호출removeItem(key)
: 키와 해당 값 삭제clear()
: 모두 삭제key(index)
: 인덱스에 해당하는 키 반환 (인덱스를 통해 키에 접근 가능 ⇒ Map 객체와 다른 점)length
: 저장된 항목의 개수 반환스토리지 객체는 iterable 객체가 아니므로, 배열처럼 다룸으로써 전체 키-값을 얻을 수 있다.
for(let i=0; i<localStorage.length; i++) {
let key = localStorage.key(i);
alert(`${key}: ${localStorage.getItem(key)}`);
}
일반 객체를 다룰 때처럼 for key in localStorage
반복문을 사용해도 전체 키-값을 얻을 수 있다. 하지만 이 방법을 사용하면 필요하지 않은 내장 필드까지 출력된다.
JSON 활용하기
JSON 메서드를 사용하여 키와 값을 객체 형태로 삽입하거나 복원할 수 있긴 하다.
localStorage.user = JSON.stringify({name: "원일"}); let user = JSON.parse( localStorage.user ); alert( user.name ); // 원일
alert( JSON.stringify(localStorage, null, 2) );
localStorage나 sessionStorage의 데이터가 갱신될 때, storage 이벤트가 실행된다. storage 이벤트는 다음의 프로퍼티를 지원한다.
key
: 변경된 데이터의 키 (.clear()
호출 시 null
)oldValue
: 이전 값 (키가 새로 추가되었다면 null
)newValue
: 새로운 값 (키가 삭제되었다면 null
)url
: 갱신이 일어난 문서의 urlstorageArea
: 갱신이 일어난 localStorage
나 session Storage
객체storage 이벤트는 이벤트를 발생시킨 스토리지를 제외하고 스토리지에서 접근 가능한 window
객체 전부에서 일어난다.
참고자료