======Store======
=====概要=====
設定情報などを保存するクラスです。階層構造を持つ情報を保存することができます。
=====プロパティ=====
====options====
''型:Object'' ''get/set''
このストアのオプションを保持するオブジェクトです。
----
====items====
''型:Object'' ''get/set''
clone()メソッドで作られる、保持しているアイテムのオブジェクトのコピーです。
----
====merger====
''型:Function'' ''get/set''
[[#merge_newitems_merger|merge()]]メソッドを呼び出してマージする際に使われれる、マージ用の関数を指定します。デフォルトではBitsmistJSの[[ja:bitsmist-js-core:reference:util:util#deepmerge_obj1_obj2|ディープマージ用の関数]]が使用されます。
この関数を自作する場合、マージ先のオブジェクトとマージするオブジェクトが以下のようなイメージで渡されます。マージ後のオブジェクトを返してください。
merger(targetObject, sourceObject); // sourceObjectをtargetObjectにマージします
=====コンストラクタ=====
====Constructor(options)====
===パラメータ===
^パラメータ^型^説明^
|options|Object|Storeクラスを初期化するオプションです。以下のキーがあります。|
| "items"|Object|itemsプロパティをセットします。|
| "merger"|Function|mergerプロパティをセットします。|
=====メソッド=====
====clear()====
''型:Undefined''
保持しているアイテムを全て削除します。
===パラメータ===
なし。
===戻り値===
なし。
----
====clone()====
''型:Object''
保持しているアイテムのディープコピーを作成します。
===パラメータ===
なし。
===戻り値===
保持しているアイテムのコピーを返します。
----
====get(key, defaultValue)====
''型:*''
keyパラメータで指定された値を返します。指定されたキーが存在しない場合defaultValueを返します。返される値が配列かオブジェクトの場合、ディープコピーされたものが返されます。
キーには、ピリオド区切りで複数の階層を指定できます。以下のように指定した場合、store["settings"]["name"]の値が、返されます。
store.get("settings.name");
途中の階層が存在しない場合でも、エラーは発生しません。上記の例で言うと、"settings"が存在しない場合でもエラーにはなりません。Undefinedが返されます。
===パラメータ===
^パラメータ^型^説明^
|key \\ ''必須''|String|取得するキーを指定します。|
|defaultValue|*|キーが存在しない場合に返す値を指定します。|
===戻り値===
指定されたキーの値です。キーの値が見つからない場合、defalutValueパラメータが指定されていればその値、指定されてない時はUndefinedを返します。
----
====has(key)====
''型:Boolean''
指定されたキーが存在するかを返します。
===パラメータ===
^パラメータ^型^説明^
|key \\ ''必須''|String|存在を確認したいキーを指定します。|
===戻り値===
キーが存在する場合はTrue、存在しない場合はFalseを返します。
----
====merge(newItems, merger)====
''型:Undefined''
現在保持しているアイテムに、引数で渡されたオブジェクトの内容をマージします。
===パラメータ===
^パラメータ^型^説明^
|newItems \\ ''必須''|Object/ \\ Array of objects|マージするオブジェクトを指定します。オブジェクトの配列を渡すこともできます。その場合は、配列内の全てのオブジェクトが順にマージされます。|
|merger|Function|マージする際に使用する関数を指定します。指定がない場合は、[[#merger|mergerプロパティ]]にセットされているマージ関数が使用されます。|
===戻り値===
なし。
----
====remove(key)====
''型:Undefined''
keyパラメータで指定された値を削除します。
===パラメータ===
^パラメータ^型^説明^
|key \\ ''必須''|String|削除するキーを指定します。|
===戻り値===
なし。
----
====set(key, value)====
''型:Undefined''
keyパラメータで指定された項目に値をセットします。指定されたキーが存在しない場合は、自動的に作成されます。既にアイテムが存在する場合は、上書きされます。
キーには、ピリオド区切りで複数の階層を指定できます。以下のように指定した場合、store["settings"]["name"]に値がセットされます。
store.set("settings.name", "BarHeader");
途中の階層が存在しない場合は、自動的に作成されます。上記の例の場合、もし"settings"が存在しない場合は、"settings"という階層が、自動的に作成されます。ただし既にキーが存在し、それがオブジェクトでない場合は、エラーとなります。例えば{"settings": "value"}という内容を持つStoreオブジェクトに上記のコードを実行した場合、"settings"という階層を作れずに、エラーとなります。
===パラメータ===
^パラメータ^型^説明^
|key \\ ''必須''|String|値をセットするキーを指定します。|
|value \\ ''必須''|*|セットする値を指定します。|
===戻り値===
なし。