Web Storage
#
Web Storage APIWeb Storage API๋ ๋ธ๋ผ์ฐ์ ๊ฐ key/value ์์ ์ฟ ํค๋ณด๋ค ํจ์ฌ ์ง๊ด์ ์ธ ๋ฐฉ์์ผ๋ก ์ ์ฅํ ์ ์๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ๋ค.
Web Storage์๋ sessionStorage
, localStorage
๋ ๊ฐ์ง ๋ฉ์ปค๋์ฆ์ด ์๋ค.
sessionStorage
: ํ์ฌ ๋ ์๋ ํญ ๋ด์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ง. ์๋ก๊ณ ์นจ, ๋ณต์ ์์๋๋ฐ์ดํฐ๋ฅผ ์ ์งํ์ง๋ง ํญ์ ๋ซ์ผ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๋ค.localStorage
: ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ๊ณ ์๋ก ์ด์ด๋ ๋ฐ์ดํฐ๊ฐ ์ ์ง๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผํตํด์ ์กฐ์ํ๊ฑฐ๋ ๋ธ๋ผ์ฐ์ ์บ์๋ฅผ ์ง์์ผ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๋ค.
#
์ฟ ํค์ ๋ค๋ฅธ ์ ์ฟ ํค๋ ๋คํธ์ํฌ ์์ฒญ ์ ์๋ฒ๋ก ์ ์ก๋์ง๋ง, Web Storage ๊ฐ์ฒด๋ ์๋ฒ๋ก ์ ์ก๋์ง์๋๋ค.
์ฟ ํค๋ณด๋ค ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ณด๊ดํ ์ ์๋ค. (์ฟ ํค : 4KB, Web Storage : ์ต์ 2MB)
๋ธ๋ผ์ฐ์ ๋ณ, ๋๋ฐ์ด์ค๋ณ๋ก Storage์ ์ต๋ ์ฉ๋์ด ๋ค๋ฅผ ์ ์๋ค.
#
๋ฉ์๋์ ํ๋กํผํฐsetItem(key, value)
: key/value ์์ ๋ณด๊ดgetItem(key)
: key์ ํด๋นํ๋ value๋ฅผ ๋ฐ์์ดremoveItem(key)
: key์ ํด๋น ๊ฐ์ ์ญ์ clear()
: ๋ชจ๋ ๊ฒ์ ์ญ์ key(index)
: index์ ํด๋นํ๋ key๋ฅผ ๋ฐ์์ดlength
: ์ ์ฅ๋ ํญ๋ชฉ์ ๊ฐ์๋ฅผ ์ป์
#
localStorage ๋ฐ๋ชจ์๋์ ์ฝ๋๋ฅผ ๋ธ๋ผ์ฐ์ ์ฝ์์์ ์คํํ๋ค.
localStorage.setItem('test', 'Hello localStorage');
๊ทธ๋ฆฌ๊ณ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ๊ณ ์ฐ๋ค์ ์๋์ ์ฝ๋๋ฅผ ์คํํ๋ค. (๋ค๋ฅธ ์ฐฝ์์ ์คํํด๋ ๋๋ค .)
alert(localStorage.getItem('test')); // Hello localStorage
#
sessionStorage ๋ฐ๋ชจ์๋์ ์ฝ๋๋ฅผ ๋ธ๋ผ์ฐ์ ์ฝ์์์ ์คํํ๋ค.
sessionStorage.setItem('test', 'Hello sessionStorage');
๊ทธ๋ฆฌ๊ณ ๋ธ๋ผ์ฐ์ ๋ฅผ ์๋ก๊ณ ์นจํ ๋ค์ ์๋์ ์ฝ๋๋ฅผ ์คํํ๋ค.
alert(sessionStorage.getItem('test'); // Hello sessionStorage
ํ์ง๋ง ๋ค๋ฅธ ํญ์์ ์คํํ๊ฑฐ๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ๊ป๋ค๊ฐ ๋ค์ ์ผ์ ์คํํด๋ณด๋ฉด null
์ด์ถ๋ ฅ๋๋ค.
alert(sessionStorage.getItem('test'); // null
#
์ผ๋ฐ ๊ฐ์ฒด์ฒ๋ผ ์ฌ์ฉํ๊ธฐStorage์ ํค๋ฅผ ์ป๊ฑฐ๋ ์ค์ ํ ๋ ์ผ๋ฐ ๊ฐ์ฒด์ ์ ์ฌํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค. ํ์ง๋ง getItem
, setItem
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
// ํค ์ค์ ํ๊ธฐlocalStorage.test = 2;
// ํค ์ป๊ธฐalert(localStorage.test); // 2
// ํค ์ญ์ ํ๊ธฐdelete localStorage.test;
์ฌ์ฉ์๊ฐ
length
,toString
,localStorage
์ ๋ด์ฅ ๋ฉ์๋๋ฅผ ํค๋ก ์ค์ ํ ์ ์๋ค.let key = 'length';localStorage[key] = 5; // TypeError: Cannot assign to read only property 'length'...
๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ฉด
storage
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋๋ฐ, Storage๋ฅผ ๊ฐ์ฒด์ฒ๋ผ ์ ๊ทผํ ๋์ผ์ด๋์ง ์๋๋ค.
#
ํค ์ํํ๊ธฐStorage ๊ฐ์ฒด๋ iterable ๊ฐ์ฒด๊ฐ ์๋๋ค. ๋์ ๋ฐฐ์ด์ฒ๋ผ ๋ค๋ค ์ ์ฒด key/value ๋ฅผ ์ป์์ ์๋ค.
for (let i = 0; i < localStorage.length; i++) { let key = localStorage.key(i); alert(`${key}: ${localStorage.getItem(key)}`);}
์ผ๋ฐ ๊ฐ์ฒด๋ฅผ ๋ค๋ฃฐ ๋ ์ฒ๋ผ for in ๋ฌธ์ ์ฌ์ฉํ ์๋ ์์ง๋ง, ์ด๋ ๊ฒ ํ๋ฉด ๋ด์ฅ ํ๋๊น์ง ์ถ๋ ฅ๋๋ค.
// ์ข์ง ์์ ๋ฐฉ๋ฒfor (let key in localStorage) { alert(key); // getItem, setItem ๊ฐ์ ๋ด์ฅ ํ๋๊น์ง ์ถ๋ ฅ๋ฉ๋๋ค.}
hasOwnProperty
๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋กํ ํ์
์์ ์์๋ฐ์ ํ๋๋ฅผ ๊ณจ๋ผ๋ผ ์ ์๋ค.
for (let key in localStorage) { if (!localStorage.hasOwnProperty(key)) { continue; // setItem, getItem ๋ฑ์ ํค๋ฅผ ๊ฑด๋๋๋๋ค. } alert(`${key}: ${localStorage.getItem(key)}`);}
for of ๋ฌธ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
let keys = Object.keys(localStorage);for (let key of keys) { alert(`${key}: ${localStorage.getItem(key)}`);}
#
๋ฌธ์์ด๋ง ์ฌ์ฉlocalStorage
์ key์ value๋ ๋ฐ๋์ ๋ฌธ์์ด์ด์ด์ผ ํ๋ค.