Web Storage
Web Storage API#
Web 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 localStoragesessionStorage ๋ฐ๋ชจ#
์๋์ ์ฝ๋๋ฅผ ๋ธ๋ผ์ฐ์ ์ฝ์์์ ์คํํ๋ค.
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๋ ๋ฐ๋์ ๋ฌธ์์ด์ด์ด์ผ ํ๋ค.