Вложенность в ES6?

Всем привет. Немного туплю.

Есть класс throwException. У него есть хранилище this._parse
class throwException {
    constructor() {
        this._parse = {}
    }

    set parse(value) {
        this._parse = value
    }
}

Что бы изменять хранилище использую сеттер parse.

Для того что бы изменить хранилище, необходимо написать:
const throwExc = new throwException();
throwExc.parse = {bool: true, type: null};

Все круто, все работает.

Но скажем так, я решил расширить хранилище, и добавил в this._parse, свойство ElementName.
class throwException {
    constructor() {
        this._parse = {
            ElementName: {}
        }
    }
}

И теперь я хочу в хранилище изменять только это свойство. Вот какой запрос на изменение:
throwExc.parse.ElementName = {bool: true, type: null}


Как теперь правильно организовать сеттер parse? Сеттер в сеттере? Или не сеттер вовсе ?
  • Вопрос задан
  • 155 просмотров
Пригласить эксперта
Ответы на вопрос 2
profesor08
@profesor08 Куратор тега JavaScript
Нет. this._parse у тебя должен быть уже неким объектом класса Parse, у которого есть некоторые свойства, например ElementName, bool, type и тд. И его ты как-то инициализируешь через конструктор, в который передаешь параметры.
Ответ написан
Комментировать
alvvi
@alvvi
export default apathy;
Не ясно зачем вам вообще сеттер в таком случае.
Было бы понятно, если бы ваш вызов был таким
throwExc.parse = {bool: true, type: null}
а ожидалось бы изменение свойства
throwExc.parse.ElementName
но так как вы напрямую обращаетесь к ElementName имеет смысл... обращаться к нему напрямую
e.g.
throwExc._parse.ElementName = {bool: true, type: null}

Если необходимо чтобы ElementName вызвался именно сеттером, то _parse должен содержать объект с сеттером ElemntName или инстанс класса с сетером ElementName.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
29 мар. 2024, в 17:04
5000 руб./за проект
29 мар. 2024, в 17:03
3000 руб./за проект
29 мар. 2024, в 16:58
3000 руб./за проект