![](/img/trans.png)
[英]How can we make Javascript arrays immutable like for Objects we have Object.freeze() method?
[英]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.