關於 Object.preventExtensions() 的注意事項
前言
在先前的 在 JavaScript 禁止物件擴充 有使用到 Object.preventExtensions() ,但實際使用後發現還有些要注意的事項,在此把學習的過程做個紀錄。
內容
範例如下
let obj = {
num : 10
};
console.log( Object.isExtensible(obj) );//true
obj.a = 10;
console.log( obj.a );//10
//
Object.preventExtensions( obj );
console.log( Object.isExtensible(obj) );//false
//
console.log( obj );
// [object Object] {
// a: 10,
// num: 10
// }
//
delete obj.a;
console.log( obj );
// [object Object] {
// num: 10
// }
//follow has error...
//Object.defineProperty( obj , 'prop' ,{ value:10 } );
範例開頭新增 a 這個 Property ,接著透過 Object.preventExtensions() 來禁止擴充,接著就是要住的事,雖然是禁止擴充,但是可以刪除!範例刪除 a 是可以的,最後順帶一提, 進止擴充後來自定義 Property 都會禁止,若喚起 Object.defineProperty() 會報錯。
參考資料
[ developer.mozilla.org ] Object.preventExtensions()
沒有留言:
張貼留言