Jeg fik lidt tilbagemelding på mine posts om persistering af klientside state – det jeg har valgt at kalde $state.
Det har voldt flere problemer at min implementering er ret hidsig i get metoden. Den smider en fejl, hvis man forsøger at “gette” noget der ikke findes i ordbogen (dictionary).
Jeg giver kritikerne ret i, at det er uheldigt at have et JavaScript objekt der smider fejl, når man ikke har nogen måde at teste for tilstanden på forhånd. Det kræver faktisk at man omslutter klientkoden i try-catch, og så synes de fleste jo nok at det bliver lidt besværligt.
Jeg overvejede at implementerer en containsKey metode, men synes kun den er marginalt bedre end at skulle fange fejl i try-catch. I stedet valgte jeg at give mulighed for at angive en default værdi, og alternativt returnerer null i tilfælde af manglende nøgle.
get: function(key, defaultValue) {
/// Udleder værdien fra hash-staten
if (typeof (_dict[key]) == "undefined")
return defaultValue;
return _dict[key];
},
Da JavaScript har dynamiske parametre til funktionskald, så vil kald til get uden defaultValue, blive tolket som null automatisk.
Code on…