寻找关于这个模块的一般反馈。remember是用户在登录时通过单击“记住我”来设置的属性。
令牌标识用户- h_token。如果设置了localStorage.h_token,则假定用户已单击“记住我”,这将在加载时进行检查。
当用户手动更改记忆状态时,将调用setRemember()。
目前不寻求任何安全问题或命名约定方面的建议,这不是一个问题。
只是一般的事情。
/*SClientStorage
**
**
**
*/
SStorage = NS.support({
Name: 'Storage',
hold: {},
clientStorage: localStorage.h_token ? localStorage : sessionStorage,
setRemember: function (remember) {
this.clientStorage = remember ? localStorage : sessionStorage
},
clear: function () {
this.clientStorage.clear();
},
setAll: function (o) {
var key;
for (key in o) {
if (o.hasOwnProperty(key)) {
this.clientStorage[key] = o[key];
}
}
},
getAll: function () {
var o = {},
key;
for (key in this.clientStorage) {
if (this.clientStorage.hasOwnProperty(key)) {
o[key] = this.clientStorage[key];
}
}
return o;
},
set: function (key, value) {
this.clientStorage[key] = value;
},
get: function (key) {
return this.clientStorage[key];
}
});发布于 2012-12-26 00:28:57
看上去真的很好。很清楚,也很容易理解。关于这个具体的实现,我想到了几件事:
setRemember()中,除非您只想支持值1或0,否则代码可以更改为:this.clientStorage = remember ? this.localStorage : this.sessionStorage;setRemember()中,当切换存储机制时,将旧机制中的值复制到新机制中可能是有意义的,这样用户以前设置的任何内容都将被保留。类似地,如果用户正在从localStorage转换为sessionSorage,那么清除旧的存储机制也有意义吗?如果进行任何这些更改,该方法还可以首先将新值与旧值进行比较,并且只有在实际发生更改时才会继续。o在log()方法中的用途是什么?log()方法中,根据用于日志记录的实用程序的不同,可以考虑同时记录整个对象,因为许多控制台/日志记录实用程序将允许您检查对象。这有时可以提供更多的信息,尽管这里只提供更方便的内容,因为无论如何,所有的值都是字符串。如果使用此路径,可以将当前函数重命名为类似于logEach()的内容。clear()的执行过程中,您是否应该预置h_token密钥?退一步,这里是实用程序的另一个API。只是大声地想出来。
ssn(key) -检索一个值。get()的同义词ssn(key, value) -设置一个值。set()的同义词ssn(obj) -设置来自obj的所有值。setAll()的同义词ssn.clear() -不变。ssn.clone() - getAll()的同义词ssn.log() -如前所述,将clientStorage对象作为一个整体记录下来。ssn.logEach() -记录每个属性和相应的值,每次一个。ssn.remember() -检索当前remember设置。ssn.remember(value) -设置remember值。setRemember()的同义词最后一个想法是,您可能希望实现某种“命名空间”类型的功能,以便能够区分为不同用户保存的设置。我建议这样做并不是出于安全考虑,而是从用户体验的角度。我认为,按照设置的方式,同一台计算机上的多个用户将合并他们的设置,这可能会让人感到困惑。
发布于 2013-01-03 12:42:22
替换
if(remember === '1') {
this.clientStorage = localStorage;
} else if(remember === '0') {
this.clientStorage = sessionStorage;
}使用
this.clientStorage = [localStorage, sessionStorage][parseInt(remember)]注:蒂芬的
this.clientStorage = remember ? this.localStorage : this.sessionStorage工作非常好,很好,简洁,没有混乱的事情发生。但是,如果您必须添加另一个选项,例如'2‘、'3’、'4‘,那么我的代码更适合。
替换
var key;
for (key in o) {使用
for (var key in o) {https://codereview.stackexchange.com/questions/19825
复制相似问题