ChainableStore
継承:Store
概要
ChainableStoreはStoreクラスを継承した、他のStoreオブジェクトと連結可能なStoreクラスです。連結された場合、値取得時に自身にないアイテムは連結されたオブジェクトから取得を試みます。
このページでは、親クラスと違う箇所のみを説明しています。
プロパティ
items
型:Object
get/set
保持しているアイテムのオブジェクトのコピーです。連結されている場合は、連結されているものも含めた全てのアイテムを返します。
代入した場合は、自身のストアに対して保存されます。連結先のストアを変更することはありません。
localItems
型:Object
get
自身が保持しているアイテムのオブジェクトです。連結されている場合は、連結されているものは含まないアイテムを返します。
コンストラクタ
Constructor(settings)
パラメータ
パラメータ | 型 | 説明 |
---|---|---|
settings | Object | Storeクラスを初期化する設定情報です。親クラスで設定できるキーに加え、以下のキーがあります。 |
“chain” | Store | このStoreオブジェクトと連結します。 |
“writeThrough” | Boolean | Trueの場合、set()/merge()での書き込み時に自身ではなく、連結先を変更します。 |
メソッド
chain(store)
型:undefined
引数で指定されたChainedStoreオブジェクトに連結させます。連結した場合にget時に指定されたキーのアイテムが存在しない場合、連結されたオブジェクトからアイテムの取得を試みます。連結できるのは1つのオブジェクトだけです。複数回このメソッドが呼ばれた場合は、後から指定されたもので上書きされます。
パラメータ
パラメータ | 型 | 説明 |
---|---|---|
store 必須 | ChainableStore | 連結するChainableStoreオブジェクト。 |
戻り値
なし。
clone()
型:Object
保持しているアイテムのディープコピーを作成します。連結されている場合、連結先が保持しているアイテムも含めたコピーを作成します。
パラメータ
なし。
戻り値
保持しているアイテムのコピーを返します。
get(key, defaultValue)
型:*
keyパラメータで指定された値を返します。指定されたキーが存在しない場合defaultValueを返します。他のストアに連結されている場合、
- 自身が保持する値
- 連結先が保持する値
- defaultValue
の順番に検索され、存在すればそれが返されます。全て存在しない場合はundefinedが返されます。
パラメータ
パラメータ | 型 | 説明 |
---|---|---|
key 必須 | String | 取得するキーを指定します。 |
defaultValue | * | キーが存在しない場合に返す値を指定します。 |
戻り値
指定されたキーの値です。
merge(value, merger)
型:undefined
現在保持しているアイテムに、引数で渡されたオブジェクトの内容をマージします。連結されている場合、デフォルトでは自身のアイテムにマージしますが、コンストラクタのオプションで“writeThrough”オプションをTrueにセットした場合は自身ではなく連結先のストアを書き換えます。
パラメータ
パラメータ | 型 | 説明 |
---|---|---|
value 必須 | Object/ Array of objects | マージするオブジェクトを指定します。オブジェクトの配列を渡すこともできます。その場合は、配列内の全てのオブジェクトが順にマージされます。 |
merger | Function | マージする際に使用する関数を指定します。指定がない場合は、mergerプロパティにセットされているマージ関数が使用されます。 |
戻り値
なし。
set(key, value)
型:undefined
keyパラメータで指定された項目に値をセットします。指定されたキーが存在しない場合は、自動的に作成されます。既にアイテムが存在しかつそれがオブジェクトである場合はマージされます。
連結されている場合、デフォルトでは自身のアイテムにセットしますが、コンストラクタのオプションで“writeThrough”オプションをTrueにセットした場合は自身ではなく連結先のストアを書き換えます。
キーには、ピリオド区切りで複数の階層を指定できます。以下のように指定した場合、store[“settings”][“name”]に値がセットされます。
store.set("settings.name", "BarHeader");
途中の階層が存在しない場合は、自動的に作成されます。上記の例の場合、もし“settings”が存在しない場合は、“settings”という階層が、自動的に作成されます。
パラメータ
パラメータ | 型 | 説明 |
---|---|---|
key 必須 | String | 値をセットするキーを指定します。 |
value 必須 | * | セットする値を指定します。 |
戻り値
なし。