筆記 Object.freeze、const,工作筆記、js 筆記
今天在看code 的時候,看到了寫法很有趣 Object.freeze() ,凍結—可以凍結對象。
(題外話...讓我想到一首歌「林俊傑-凍結」....凍結那時間 凍結初遇那一天) 🧊🧊
功能 和 const 很像 與防止修改有關。 於是就查一下AI 給的回應(圖1):
![]() |
| Object.freeze 與 const 差異(圖1) |
註解
當使用 const 聲明一個變量時,這個變量的引用不能改變,但如果這個變量是對象,對象的屬性仍然可以被修改。
const 聲明一個變量時,這個變量的引用不能改變,但如果這個變量是對象,對象的屬性仍然可以被修改。換句話說也就是 設定成object 裡面的屬性值也一樣可變。
實驗
心得
freeze 凍結,再給予其他參數 是不會拋出TypeError,但是 const 會顯示錯誤。
剛開始看到freeze 想說這不是和const 差不多嗎? 一樣都是不可修改。一開始以為freeze 是凍結就不可修改, 結果 測試下來 和const 一樣, 在特殊情況下 也能 改變其對象的值。
以 結冰的湖水 來比喻 freeze, 只是冷凍了 表層,其內還是活水,除非 下層 也 結凍。 可以參考深層結凍 deepfreeze , 利用 迴圈方式做凍結。
題外話
如果要宣告object 不可被擴充,要能更改 裡面物件屬性值,其實也可使用 Object.seal
題外話
如果要宣告object 不可被擴充,要能更改 裡面物件屬性值,其實也可使用 Object.seal
至少他不會拋出TypeError😝

留言
張貼留言