私は jquery のプラグインを作成しています。次のようなコードを使用して、ユーザーがプラグインのオプションを指定できるようにしました。
var settings = $.extend({
url : 'error.json',
slotWidth : 100,
slotHeight : 100,
gridWidth : 6,
gridHeight : 3,
basketLayers : 1,
layerDirection : "vertical",
classNames : {
productPanelParent : '.products-panel-parent',
productPanelTabs : '.products-panel-tabs',
productPanelGroup : '.products-panel-container',
productPanel : '.products-panel',
productBasketParent : '.products-basket-parent',
productBasketGroup : '.products-basket-container',
productBasket : '.products-basket',
productBasketMenu : '.products-basket-menu',
basketSlot : '.basket-slot',
basketSlotFull : '.basket-slot-full',
basketSlotHelper : '.basket-slot-highlight',
product : '.product',
resetBasket : '.clearBasket',
resetLayer : '.clearLayer',
viewLayer : '.viewLayer'
}
}, options);
null
問題は、classNames の 1 つをオーバーライドしようとすると、プロパティが指定されていない場所に配列全体が値で上書きされることです。
たとえば、次のようにします。
$('#somediv').myPlugin({
gridWidth : 4,
gridHeight : 2,
classNames : {
productBasket : '.small_basket'
}
});
プロパティはsettings.classNames.productBasket
正しい値になりますが、すべてが settings.classNames にあり、null になります。
どうすればこれを回避できますか?
(配列内のデフォルト値を処理するカスタム関数を作成せずに?)