Правильно ли реализован класс?
Прохожу по одному учебнику практические задания, но там нет решения чтобы свериться, что-то мне подсказывает что я мог не правильно понять задание или не добавить какие-то нужные проверки возможно? Мне лично что-то кажется метод get не очень хорошо реализован. Не могли бы вы проверить и подсказать?
Само задание: Класс Store в ООП в JavaScript Давайте реализуем класс Store, который будет представлять собой оболочку над локальным хранилищем и позволит легко сохранять и изменят в нем хранящиеся структуры данных.
Давайте посмотрим, как мы будем работать с описанным классом. Для начала создадим его объект:
let store = new Store; Теперь сохраним данные с заданным ключом:
store.set('key', {a: 1, b: 2, c: 3}); Получим эти данные по ключу:
let res = store.get('key'); console.log(res); // {a: 1, b: 2, c: 3} Получим часть сохраненной структуры, указав несколько ключей через точку:
let res = store.get('key.a'); console.log(res); // 1 Получим другую часть по сложному ключу:
let res = store.get('key.b'); console.log(res); // 2
Реализуйте описанный класс.
Сделайте метод, который будет изменять данные по заданному ключу.
Сделайте метод, который будет удалять данные по заданному ключу.
Мой код:
class Store {
set(key, value) {
this.key = value;
}
get(key) {
let obj = key.split('.')[0];
let nested = key.split('.')[1];
return this.obj[nested] ?? this.obj;
}
setData(key, value) {
if (this.hasOwnProperty(key)) {
this.key = value;
}
}
deleteData(key) {
// this.key = {};
delete this.key;
}
}
let store1 = new Store;
store1.set('key', {a: 1, b: 2, c: 3});
store1.setData('key', 15);
store1.deleteData('key');
Ответы (2 шт):
Я нашел решение:
class Store {
set(key, value) {
value = JSON.stringify(value);
localStorage.setItem(key, value);
}
get(key) {
console.log( JSON.parse(localStorage.getItem(key)) );
}
}
let store = new Store;
store.set('key', {a: 1, b: 2, c: 3});
store.get('key');
Остальное по аналогии.
Немного запаздало, но вдруг кому поможет. Минус в том, что трижды повторил одну и ту же манипуляцию с ключом, а этого надо избегать. Может кто поправит.
class Store {
set(key, obj) {
localStorage.setItem(key, JSON.stringify(obj));
}
get(key) {
let keq = key.split(".");
let keq0 = keq[0];
let keq1 = keq[1];
let res = JSON.parse(localStorage.getItem(keq0));
if (keq1 == undefined) return res;
else {
return res[keq1];
}
}
setItem(key, newVal) {
let keq = key.split(".");
let keq0 = keq[0];
let keq1 = keq[1];
let res = JSON.parse(localStorage.getItem(keq0));
if (keq1 == undefined) return res;
else {
res[keq1] = newVal;
localStorage.setItem("key", JSON.stringify(res));
}
}
removeItem(key) {
let keq = key.split(".");
let keq0 = keq[0];
let keq1 = keq[1];
let res = JSON.parse(localStorage.getItem(keq0));
if (keq1 == undefined) return res;
else {
delete res[keq1]
localStorage.setItem("key", JSON.stringify(res));
}
}
}
let store = new Store();
store.set("key", { a: 1, b: 2, c: 3 });
console.log(store.get("key.b"));
store.setItem("key.b", 4)
console.log(store.get("key.b"));
store.removeItem('key.b')