關於 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()
沒有留言:
張貼留言