Javascript类返回私有变量而不是getter

Javascript类返回私有变量而不是getter,javascript,Javascript,我希望下面类的实例同时返回“private”变量及其getter,但getter变量根本不返回。为什么? class Foo { _myPrivateVar = null; get myPublicVar() { return this._myPrivateVar; } set myPublicVar(v) { if (v > 4) { this._myPrivateVar = v; } } } const f = new Fo

我希望下面类的实例同时返回“private”变量及其getter,但getter变量根本不返回。为什么?

class Foo {
  _myPrivateVar = null;

  get myPublicVar() {
    return this._myPrivateVar;
  }

  set myPublicVar(v) {
    if (v > 4) {
      this._myPrivateVar = v;
    }
  }
}

const f = new Foo();
console.log(f) // Foo { _myPrivateVar: 5 }

我期望
{u myPrivateVar:5,myPublicVar:5}
。我知道我可以直接访问
f.myPublicVar
,但问题是当从Express服务器返回实例时,例如,生成的JSON对象没有getter属性
myPublicVar
。为什么?

getter和setter在原型上,而
\u myPrivateVar
放在实例本身上

当使用
JSON.stringify
对对象进行序列化时(例如通过网络传输),生成的JSON中只包含可枚举的自身属性:

constobj=Object.create({foo:'foo'});
obj.bar=‘bar’;
log(JSON.stringify(obj))
属性名称未放置在User.prototype中。相反,它是在调用构造函数之前由new创建的,它是对象本身的一个属性

类用户{
name=“匿名”;
(){
log(`Hello,${this.name}!`);
}
}
新用户().sayHi();
console.log('sayHi:',User.prototype.sayHi);//放置在User.prototype中

console.log('name:',User.prototype.name);//未定义,未放置在User.prototype中
getter/setter位于原型上,而不是实例上(且具有可枚举性:false)。