TypeError: 获取私有仅限设置器属性

当读取仅定义了setter私有属性的值时,会发生JavaScript异常“获取私有setter-only属性”。

消息

TypeError: '#x' was defined without a getter (V8-based)
TypeError: getting private setter-only property (Firefox)
TypeError: Trying to access an undefined private getter (Safari)

错误类型

哪里出错了?

尝试获取仅指定了setter的私有属性的值。与普通对象不同,在普通对象中,未定义的getter仅表示属性始终返回undefined,对于私有属性,这是一个错误。

示例

没有getter的私有属性

这里,#name没有getter,因此尝试使用this.#name读取它将抛出错误。

js
class Person {
  set #name(value) {}

  get name() {
    return this.#name;
  }
}

const person = new Person();
console.log(person.name);

私有属性没有getter但有setter的情况并不常见。请添加getter或重构程序,以便也可以删除setter。

另请参阅