使用getter和setter来将ES6类属性转化为JSON字符串。
使用getter和setter来将ES6类属性转化为JSON字符串。
我有一个使用set
和get
函数设置和访问属性的JavaScript ES6类。该属性也是构造函数的参数,因此可以使用该属性实例化类。
class MyClass { constructor(property) { this.property = property } set property(prop) { // 一些验证等操作 this._property = prop } get property() { return this._property } }
我使用_property
来避免使用get/set时发生的JS陷阱,如果直接设置property
,会导致无限循环。
现在,我需要将MyClass的一个实例转换为字符串,以便通过HTTP请求发送。序列化的JSON是一个对象,如下所示:
{
//...
_property:
}
我需要生成的JSON字符串保留property
,以便我发送给的服务可以正确解析它。我还需要property
保留在构造函数中,因为我需要从服务发送的JSON构造MyClass的实例(该服务发送的是带有property
而不是_property
的对象)。
我该如何解决这个问题?我应该在将MyClass实例发送到HTTP请求之前拦截它并使用正则表达式将_property
更改为property
吗?这似乎很丑陋,但我将能够保留我当前的代码。
另外,我可以拦截从服务发送到客户端的JSON,并使用完全不同的属性名称实例化MyClass。但这意味着服务端和客户端之间的类表示不同。