簡體   English   中英

Object.freeze凍結屬性? 或如何將屬性設置為不可變/只讀?

[英]Object.freeze to freeze a property? Or how to set a property to be immutable/read-only?

面向Object.freeze()的文檔指出,僅在其原始類型實際上是“對象”的情況下才允許凍結對象。 我正在使用一些JSON數據對象,並希望使用它來將特定屬性設置為不可變的(例如uuid,在db中是不可變的)。 Object.freeze()似乎是完美的解決方案,直到:

TypeError: Object.freeze called on non-object

真是

因此,假設我有一個像這樣的對象(從JSON解析):

{
    "uuid": "765926c1-911e-49b2-b597-48cf0df59a17",
    "firstName": "Bob",
    "lastName": "Dole"
}

有什么辦法可以迫使uuid不變?

是的,您需要使用Object.defineProperty並重新定義uuid屬性描述符以使其不可寫和不可配置:

Object.defineProperty(obj, "uuid", { configurable: false, writable: false });

configurable: false表示從現在起無法再次定義uuid屬性描述符。 也就是說,沒有其他句子能夠使該屬性再次可變。

歸根結底, Object.freeze就像一個快捷方式,它迭代給定對象中的所有可枚舉屬性,並將它們變成不可配置+不可寫的屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM