1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/songjinyang-everyday

 / Детали:

Задача 39. Реализовать аналог localStorage ```javascript class LocalStorage { constructor() { this.store = {}; } setItem(key, value) { this.store[key] = value; }...

Предстоит сделать
Владелец
Создано  
27.04.2025

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'))

Комментарий (0)

GitLife Service Account Задача создана

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/songjinyang-everyday.git
git@api.gitlife.ru:oschina-mirror/songjinyang-everyday.git
oschina-mirror
songjinyang-everyday
songjinyang-everyday