0
我認爲答案是「否」,除了刪除對包含對象的所有引用並允許垃圾回收最終刪除包含對象的所有內容。有什麼方法可以刪除只讀且不可配置的屬性?
Live Example(與控制檯(在Chrome命中F12等),查看日誌輸出)
代碼:
(function() {
var nameValue = "uninitialized";
Object.defineProperty(this, "name", {
enumerable: true,
configurable: false,
get: function() {
return nameValue;
},
set: function() {
console.log("This is a read-only property");
}
});
console.log(nameValue);
nameValue = "George";
delete this.name;
this.name = "";
console.log(this.name);
})();
是的,沒錯。然而,通過「只讀」,我會期待一個'writable:false'數據屬性,而不是一個不會改變的訪問器屬性。 – Bergi
請注意,我如何使用底層變量將name屬性的值更改爲閉包,並且不傳入任何初始參數 - 此設計模式只有在使用get返回屬性下的內部變量(非屬性)時纔有意義可以在內部修改。使用getter或setter不允許使用可寫,並將自動設置爲false。在這樣做的時候,我已經隱藏了數據,但是允許內部操作和控制內部對象狀態的能力。 – Aeoril