истечения времени при имитации localStorage можно использовать следующий подход: 1. При сохранении данных добавлять поле с временем истечения (например, через Date.now() + срок хранения в миллисекундах). 2. При получении данных проверять, не истекло ли время их хранения. Если истекло, данные удаляются. 3. Периодически (например, каждые несколько минут) проверять все сохраненные данные на истечение времени и удалять устаревшие. Пример кода: javascript const mockStorage = {}; function setItem(key, value, ttl) { const now = Date.now(); const expirationTime = now + ttl; mockStorage[key] = { value, expirationTime }; } function getItem(key) { const item = mockStorage[key]; if (!item) return null; if (item.expirationTime < Date.now()) { delete mockStorage[key]; return null; } return item.value; } function clearExpiredItems() { const now = Date.now(); for (const key in mockStorage) { if (mockStorage[key].expirationTime < now) { delete mockStorage[key]; } } } // Пример использования setItem('username', 'John Doe', 1000 * 60 * 60 * 24); // 24 часа console.log(getItem('username')); // 'John Doe' setTimeout(() => { clearExpiredItems(); console.log(getItem('username')); // null }, 1000 * 60 * 60 * 24 + 1);
Этот подход позволяет эффективно управлять временем жизни данных в имитации localStorage.
let obj = {// Сохраняется здесь
cc: {},
setItem: function (key, value, time) {
this.cc[key] = value
if (time) {
setTimeout(() => {
this.removeItem(key)
}, time)
}
},
getItem: function (key) {
return this.cc[key] || null
},
removeItem: function (key) {
delete this.cc[key]
},
clear() {
this.cc = {}
}
}
obj.setItem('time', 'время', 3000)
console.log(obj.getItem('time'))
setTimeout(() => {
console.log(obj.getItem('time'))
}, 4000)
// Другой способ записи
const cd = (function () {
let cc = {} // Сохраняется здесь
return {
setItem: function (key, value, time) {
cc[key] = value
if (time) {
console.log(typeof time)
if (typeof time !== 'number') throw 'время должно быть числом'
setTimeout(res => {
this.removeItem(key)
})
}
},
getItem: (key) => cc[key] || null,
removeItem: (key) => delete cc[key],
clear: () => cc = {}
}
})()
Object.defineProperty(Object.prototype, 'my', {
value: cd
})
let ddd = '哇咔咔'
let zzz = 'zzzzz'
my.setItem('xx', ddd)
my.setItem('zzz', zzz, 2000)
console.log(my.getItem('xx'))
my.removeItem('xx')
console.log(my.getItem('xx'))
console.log(my.getItem('zzz'))
my.clear()
console.log(my.getItem('zzz'))
setTimeout(res => {
console.log(my.getItem('zzz'))
}, 4000)