JS类getter setters

时间:2018-04-03 19:00:48

标签: javascript getter-setter

根据Martin,此语法可用于在nodeJS中定义类:

class Person {
  constructor() {
    this.id = 'id_1';
  }
  set name(name) {
    this._name = name;
  }
  get name() {
    return this._name;
}

用法:

myPerson.name = "Saul"; // save the value in `_name` variable.

此约定的轻微问题是调用JSON.stringify(myPerson)将打印以下内容:

{
  "_name": "Saul"
} 

但是如果我从setter函数中删除下划线,并将其写成如下:

  set name(name) {
    this.name = name;
  }

setter函数将以递归方式永久调用自身。那么有没有办法使用这个漂亮的getter-setter语法,仍然使用name属性?我正在运行nodejs。

1 个答案:

答案 0 :(得分:1)

我在这里根本没有看到任何问题。如果你反序列化它,它按预期工作:

 const saul = Object.assign(new Person, JSON.parse('{"_name": "Saul"}'));
 console.log(saul.name);