TypeError: getting private setter-only property
当读取仅定义了设置器(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)
错误类型
TypeError
哪里出错了?
此处尝试获取仅指定了设置器(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);
私有元素有设置器(setter)而没有获取器(getter)的情况并不常见。要么添加一个获取器(getter),要么重构你的程序,以便设置器(setter)也可以被移除。