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)也可以被移除。