У меня есть класс 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
, а не _property
).
Как мне обойти это? Должен ли я просто перехватить экземпляр MyClass перед его отправкой в HTTP-запрос и преобразовать _property
в property
с помощью регулярного выражения? Это кажется некрасивым, но я смогу сохранить свой текущий код.
В качестве альтернативы я могу перехватить JSON, отправляемый клиенту из службы, и создать экземпляр MyClass с совершенно другим именем свойства. Однако это означает различное представление класса по обе стороны службы.
MyClass.prototype.toJson
может вам помочь - person Farzher   schedule 08.02.2017toJSON
- обратите внимание на заглавные буквы - person Amadan   schedule 08.02.2017