使用getter和setter来将ES6类属性转化为JSON字符串。

7 浏览
0 Comments

使用getter和setter来将ES6类属性转化为JSON字符串。

我有一个使用setget函数设置和访问属性的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。但这意味着服务端和客户端之间的类表示不同。

0