LoginSignup
1
1

More than 3 years have passed since last update.

JavaScript Storageオブジェクト

Posted at

初学者のため、学習した内容をまとめていく。
今回は、Storageオブジェクトについて

Storageオブジェクト

JavaScriptではスクリプトからコンピューターに勝手にアクセスできない仕組みとなっている。ブラウザにアクセスするとPC内のファイルが勝手に書き換えられるわけにはいけないため。
その例外としてクッキーと言う仕組みがあるが、制限もあり使いにくい。
その代替手段としてWeb Storageと言うものがある。これはブラウザ内蔵のデータストアでkeyとvalueの値の組み合わせでデータを保存する。

クッキーとストレージの違い

項目 ストレージ クッキー
データサイズの上限 大きい(5Mb) 小さい(4KB)
データの有効期限 なし あり
データ通信 発生しない リクエストの都度、サーバーにも送信

そして、Storageには2種類あり、ローカルストレージとセッションストレージがある。

2つの違い

ストレージ 違い
ローカルストレージ ウィンド/タブをまたいでデータの共有が可能。ブラウザーを閉じてもデータは維持される
セッションストレージ 現在のセッション(ブラウザが開いている間)だけ保持される。ウィンド/タブをまたげない・データを共有することもできない

用途で使い分けるべきだが、ローカルストレージは意図的に削除しないといけない、複数のアプリを使うと変数名が衝突しやすい、と言う問題もあり、基本はセッションストレージを使う方が良い。

データのセット

2つの使い方はプロパティが違うだけなので、必要なプロパティを当ててもらうと良い。

let storage = localStorage //sessionStorage
//変数に定義していると後々ストレージを変更することになっても変更箇所が少なくて良い
storage.setItem('key','value');

値のセットの仕方は複数ある。必要に応じて使い分ける。
開発者ツールでストレージの内容も確認することができる。

データのセットの仕方

記法 構文
プロパティ構文 storage.キー名 = value
ブラケット構文 storage['キー名'] = value
メソッド構文(取得) storage.getItem('キー名')
メソッド構文(設定) storage.setItem('キー名','value')

データの削除

storage.removeItem('キー名');
delete storage.キー名;
delete storage['キー名'];

storage.clear(); //無条件に全てのデータを削除

ストレージにオブジェクトを保存・取得

ストレージへの保存は文字列となる。オブジェクトを保存してもエラーにはならないが、復元不可能な文字列となる。
そのため、オブジェクトを保存する場合は、復元可能な文字列に変換しないといけない。
そのために

内容 構文
復元可能な文字列変換 JSON.stringify(変換するオブジェクト)
文字列からオブジェクトへ変換 JSON.parse(元に戻す文字列)

のメソッドを使う。

let storage = localStorage;
let test = { name:'test', point: 80}
storage.setItem('satou', JSON.stringify(test)); //値のセット
let answer = JSON.parse(storage.getItem('satou')); //値の取り出し

なぜ、オブジェクトで保存?
ローカルストレージはオリジン単位でデータを保存するため、複数アプリが起動すると名前の衝突が起きる危険がある。そのため、アプリごとにオブジェクトとして保存する方がいい。

ストレージはログイン状態の保存など使うことが多いと思うので、気をつけて使っていきたい。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1