У меня есть класс JavaScript ES6, у которого есть свойство с set
и доступно с функциями get
. Это также параметр конструктора, поэтому класс может быть создан с указанным свойством.
class MyClass {
constructor(property) {
this.property = property
}
set property(prop) {
// Some validation etc.
this._property = prop
}
get property() {
return this._property
}
}
Я использую _property
, чтобы избежать запуска JS с использованием get/set, что приводит к бесконечному циклу, если я устанавливаю непосредственно на property
.
Теперь мне нужно подстроить экземпляр MyClass, чтобы отправить его с помощью HTTP-запроса. Стробируемый JSON - это такой объект, как:
{
//...
_property:
}
Мне нужна результирующая строка JSON для сохранения property
, поэтому служба, которую я отправляю, может правильно ее проанализировать. Мне также нужно property
оставаться в конструкторе, потому что мне нужно построить экземпляры MyClass из JSON, отправленные службой (которая отправляет объекты с property
not _property
).
Как мне обойти это? Должен ли я просто перехватить экземпляр MyClass перед отправкой его в HTTP-запрос и мутировать _property
to property
с помощью regex? Это кажется уродливым, но я смогу сохранить текущий код.
В качестве альтернативы я могу перехватить JSON, отправляемый клиенту из службы, и создать экземпляр MyClass с совершенно другим именем свойства. Однако это означает другое представление класса с обеих сторон службы.