注意 preventExtensions() 在空物件運行時的特別行為
前言
在 關於檢查 Object.preventExtensions() 、Object.seal() 與 Object.freeze() 的注意事項 有提到 Object.preventExtensions() ,但我發現它在空物件時遽然有不一樣的結果 ,在此把學習的過程做個紀錄。
內容
範例如下
let objPE = { }; let objPE1 = { a : 10 }; let objSeal = { }; let objFrozen = { }; // Object.preventExtensions( objPE ); Object.preventExtensions( objPE1 ); Object.seal( objSeal ); Object.freeze( objFrozen ); // console.log( Object.isExtensible( objPE ) );//false console.log( Object.isSealed( objPE ) );//false console.log( Object.isFrozen( objPE ) );//false // console.log( Object.isExtensible( objPE1 ) );//false console.log( Object.isSealed( objPE1 ) );//true console.log( Object.isFrozen( objPE1 ) );//true // console.log( Object.isExtensible( objSeal ) );//false console.log( Object.isSealed( objSeal ) );//true console.log( Object.isFrozen( objSeal ) );//false // console.log( Object.isExtensible( objFrozen ) );//false console.log( Object.isSealed( objFrozen ) );//true console.log( Object.isFrozen( objFrozen ) );//true
範例的 "objPE" 與 "objPE1" 分別代表要進行 Object.preventExtensions() 的非空物件與空物件,要注意比對在 Object.isSealed() 與 Object.isForzen() 的結果是不一樣的!而 Object.seal() 與 Object.freeze() 在空物件與非空物件的結果是一樣的。
參考資料
[ developer.mozilla.org ] Object.isExtensible()
[ developer.mozilla.org ] Object.isSealed()
[ developer.mozilla.org ] Object.isFrozen()
相關文章與資料
關於檢查 Object.preventExtensions() 、Object.seal() 與 Object.freeze() 的注意事項
沒有留言:
張貼留言