Storage.prototype ={// 方便后续获取键名
getKey:function(key){returnthis.userId + key
},get:function(userKey, cb){let key =this.getKey(userKey)let status =this.status.SUCCESSlet value, sepIndex, time, result
try{
value =this.Storage.getItem(key)}catch(e){
value =null
status =this.status.FAILURE
result ={
value,
status
}
cb &&cb(result)return result
}if(value){
sepIndex = value.indexOf(this.sep)
time = value.slice(0, sepIndex)// 查看内容是否过期if(newDate().getTime()<newDate(time).getTime()||+time ===0){
value = value.slice(sepIndex +this.sep.length)}else{
status =this.status.TIMEOUT
value =nullthis.remove(key)}}else{
value =null}
result ={
value,
status
}
cb &&cb(result)return result
},set:function(userKey, value, time, time =0, cb){let key =this.getKey(userKey)let status =this.status.FAILURElet result
// 是否设置时间,未设置默认一个月try{
time =newDate(time).getTime()}catch(e){
time =newDate().getTime()+30*24*60*60*1000}const realValue = time +this.sep + value
// 检查是否数据过多溢出try{this.Storage.setItem(key, realValue)}catch(e){
status =this.status.OVERFLOW}
result ={
status
}
cb &&cb(result)return result
},
remove:function(userKey, cb){let status =this.status.FAILUERlet key =this.getKey(userKey)let result
try{this.Storage.removeItem(key)
status =this.status.SUCCESS}catch(e){}
result ={
status
}
cb &&cb(result)return result
}}