在這篇文章中,我們將介紹 JavaScript 中 Object 物件的 freeze() 方法。

JavaScript 的 Object.freeze() 方法接受一個物件作為參數,並返回相同的物件。傳遞給該方法的物件會被改變,並變成不可變的物件。新的屬性無法添加,現有的屬性無法被刪除或更改。

示例:

const dog = {}
dog.breed = 'Siberian Husky'
const myDog = Object.freeze(dog)

Object.isFrozen(dog) //true
Object.isFrozen(myDog) //true
dog === myDog //true

dog.name = 'Roger' //TypeError: Cannot add property name, object is not extensible

在這個示例中,dog 和 myDog 都被凍結了。傳遞給 Object.freeze() 的參數被改變後無法恢復。同時,該方法也返回相同的物件,因此 dog === myDog (它們是同一個物件)。

調用 Object.freeze() 方法等同於調用 Object.preventExtensions() 方法,用於防止物件添加更多屬性,並且將所有屬性設置為不可配置和不可寫。