getItem(key) { return this.store[key]; } removeItem(key) { delete this.store[key]; } clear() { this.store = {}; } key(index) { let keys = Object.keys(this.store); if (index >= 0 && index < keys.length) { return keys[index]; } return null; } } ``` ### Описание Класс LocalStorage
предоставляет методы для работы с данными, аналогично тому, как это делается в `localStorage`: - `setItem(key, value)`: Устанавливает значение для заданного ключа. - `getItem(key)`: Возвращает значение по заданному ключу. - `removeItem(key)`: Удаляет значение по заданному ключу. - `clear()`: Очищает все данные. - `key(index)`: Возвращает ключ по заданному индексу. Этот класс можно использовать для хранения данных в памяти, аналогично `localStorage`, но без использования реального хранилища браузера.
// Моделирование реализации localStorage
// localStorage.setItem('ss',value)
// localStorage.getItem('ss')
// localStorage.removeItem('ss')
let obj = {// Сохраняем здесь
cc: {},
setItem: function (key, value) {
this.cc[key] = value
},
getItem: function (key) {
return this.cc[key] || null
},
removeItem: function (key) {
delete this.cc[key]
},
clear() {
this.cc = {}
}
}
obj.setItem('ss', '1')
obj.setItem('aa', 'aa')
console.log(obj.getItem('ss'))
console.log(obj.getItem('aa'))
obj.removeItem('ss')
console.log(obj.getItem('ss'))
obj.clear()
console.log(obj.getItem('aa'))
// Второй вариант
const cd = (function () {
let cc = {} // Сохраняем здесь
return {
setItem: (key, value) => cc[key] = value,
getItem: (key) => cc[key] || null,
removeItem: (key) => delete cc[key],
clear: () => cc = {}
}
})()
Object.defineProperty(Object.prototype, 'my', {
get() {
return cd
}
})
let ddd = '哇咔咔'
let zzz = 'zzzzz'
my.setItem('xx', ddd)
my.setItem('zzz', zzz)
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'))