class Stroage{
static minIndex = 1
constructor(level = 2) {
for(let i = 1; i <= level; i++) {
this[`getLevel${i}`] = this.getLeval.bind(this, i, ...arguments)
this[`setLevel${i}`] = this.setLeval.bind(this, i, ...arguments)
}
}
getLeval(level, key) {
return localStorage.getItem(key)
}
setLeval(level ,key, value) {
let arr = []
if(localStorage.getItem(level)) {
arr = JSON.parse(localStorage.getItem(level) || '[]')
arr.push(key)
} else {
arr.push(key)
}
this.deleteStorage(level, () => {
try {
localStorage.setItem(key, value)
localStorage.setItem(level, JSON.stringify(arr))
} catch (err) {
throw Error
}
})
}
deleteStorage(level, func) {
let bol = true, arr = []
while(bol) {
try {
func()
bol = false
if(arr != '') {
localStorage.setItem(Storage.minIndex, JSON.stringify(arr))
}
} catch {
if(!localStorage.getItem(Storage.minIndex)) {
return '数据量过大'
bol = true
}
arr = JSON.parse(localStorage.getItem(Storage.minIndex) || '[]')
localStorage.removeItem(arr[0])
arr.splice(0, 1)
if(arr.length < 1) {
localStorage.removeItem(Storage.minIndex)
Storage.minIndex++
}
if(Storage.minIndex == level && arr.length < 1) {
return '数据量过大'
bol = false
}
}
}
}
}
const storage = new Stroage()
console.log(storage)
const data = storage.setLevel1('测试', '数据')
console.log(data)
console