SyntaxError: private fields can't be deleted

當對類或物件的私有元素使用delete時,會發生 JavaScript 異常 "SyntaxError:無法刪除私有欄位"。

訊息

SyntaxError: Private fields can not be deleted (V8-based)
SyntaxError: private fields can't be deleted (Firefox)
SyntaxError: Cannot delete private field X (Safari)

錯誤型別

SyntaxError

哪裡出錯了?

程式碼嘗試 delete 物件或類的私有元素(欄位或方法)。JavaScript 禁止這樣做——私有元素不能即時新增或刪除。

示例

js
class MyClass {
  #myPrivateField;
  deleteIt() {
    delete this.#myPrivateField; // SyntaxError: private fields can't be deleted
  }
}
js
class MyClass {
  #myPrivateMethod() {
  }
  #deleteIt() {
    delete this.#myPrivateMethod; // SyntaxError: private fields can't be deleted
  }
}

另見