======ChainableStore====== ''継承:Store'' =====概要===== ChainableStoreはStoreクラスを継承した、他のStoreオブジェクトと連結可能なStoreクラスです。連結された場合、値取得時に自身にないアイテムは連結されたオブジェクトから取得を試みます。両方にアイテムが存在しマージ可能なオブジェクトの場合は、マージしたものが返されます。 このページでは、親クラスと違う箇所のみを説明しています。 =====プロパティ===== ====localItems==== ''型:Object'' ''get'' 自身が保持しているアイテムのオブジェクトです。連結されている場合は、連結されているものは**含まない**アイテムを返します。 =====コンストラクタ===== ====Constructor(options)==== ===パラメータ=== ^パラメータ^型^説明^ |options|Object|Storeクラスを初期化する設定情報です。親クラスで設定できるキーに加え、以下のキーがあります。| | "chain"|Store|このStoreオブジェクトと連結します。| | "writeThrough"|Boolean|Trueの場合、set()/merge()での書き込み時に、自身ではなく連結先を変更します。| =====メソッド===== ====chain(store)==== ''型:Undefined'' 引数で指定されたStoreオブジェクトに連結させます。連結できるのは1つのオブジェクトだけです。複数回このメソッドが呼ばれた場合は、後から指定されたもので上書きされます。 ===パラメータ=== ^パラメータ^型^説明^ |store \\ ''必須''|ChainableStore|連結するChainableStoreオブジェクト。| ===戻り値=== なし。 ---- ====clone()==== ''型:Object'' 保持しているアイテムのディープコピーを作成します。連結されている場合、連結先が保持しているアイテムと自身のアイテムそれぞれをclone()でコピーし、マージしたものを返します。マージにはBitsmistJSの[[ja:bitsmist-js-core:reference:util:util#deepmerge_obj1_obj2|ディープマージ用の関数]]が使用されます。 ===パラメータ=== なし。 ===戻り値=== 保持しているアイテムのコピーを返します。 ---- ====get(key, defaultValue)==== ''型:*'' keyパラメータで指定された値を返します。 他のストアに連結されている場合、自身にないアイテムは連結されたオブジェクトから取得を試みます。両方にアイテムが存在しマージ可能なオブジェクトの場合は、それぞれをディープクローンしたものをマージして返します。マージにはBitsmistJSの[[ja:bitsmist-js-core:reference:util:util#deepmerge_obj1_obj2|ディープマージ用の関数]]が使用されます。 どちらのストアにも存在しない場合は、defaultValueが返されます。 ===パラメータ=== ^パラメータ^型^説明^ |key \\ ''必須''|String|取得するキーを指定します。| |defaultValue|*|キーが存在しない場合に返す値を指定します。| ===戻り値=== 指定されたキーの値です。 ---- ====has(key)==== ''型:Boolean'' 指定されたキーが存在するかを返します。他のストアに連結されている場合、自身にないアイテムは連結されたオブジェクトから取得を試みます。 ===パラメータ=== ^パラメータ^型^説明^ |key \\ ''必須''|String|存在を確認したいキーを指定します。| ===戻り値=== キーが存在する場合はTrue、存在しない場合はFalseを返します。 ---- ====merge(value, merger, options)==== ''型:Undefined'' 現在保持しているアイテムに、引数で渡されたオブジェクトの内容をマージします。連結されている場合、デフォルトでは自身のアイテムにマージしますが、コンストラクタのオプション、またはoptions引数で"writeThrough"オプションをTrueにセットした場合、自身ではなく連結先のストアを書き換えます。 ===パラメータ=== ^パラメータ^型^説明^ |value \\ ''必須''|Object/ \\ Array of objects|マージするオブジェクトを指定します。オブジェクトの配列を渡すこともできます。その場合は、配列内の全てのオブジェクトが順にマージされます。| |merger|Function|マージする際に使用する関数を指定します。指定がない場合は、[[ja:bitsmist-js-core:reference:store:store#merger|mergerプロパティ]]にセットされているマージ関数が使用されます。| |options|Object|セット時のオプションです。以下のキーがあります。| | "writeThrough"|Boolean|Trueの場合、連結先のストアにセットします。| ===戻り値=== なし。 ---- ====set(key, value, options)==== ''型:Undefined'' keyパラメータで指定された項目に値をセットします。指定されたキーが存在しない場合は、自動的に作成されます。 連結されている場合、デフォルトでは自身のアイテムにセットしますが、コンストラクタのオプション、またはoptions引数で"writeThrough"オプションをTrueにセットした場合、自身ではなく連結先のストアを書き換えます。 ===パラメータ=== ^パラメータ^型^説明^ |key \\ ''必須''|String|値をセットするキーを指定します。| |value \\ ''必須''|*|セットする値を指定します。| |options|Object|セット時のオプションです。以下のキーがあります。| | "writeThrough"|Boolean|Trueの場合、連結先のストアにセットします。| ===戻り値=== なし。