In JavaScript, the preventExtensions() method is used with the Object object. This method takes an object as an argument and returns the same object. The preventExtensions() method modifies the object, making it unable to accept new properties. However, it still allows for the removal and modification of existing properties.

Here is an example:

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

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

In this example, we create a new object called dog and assign the property breed with the value 'Siberian Husky'. After calling the preventExtensions() method on the dog object, any attempt to add a new property, like name, will result in a TypeError as the object is no longer extensible.

It’s important to note that the original object is also returned as the result of the preventExtensions() method. This means that dog and myDog refer to the same exact object.

Although new properties cannot be added, existing properties can still be removed:

const dog = {}
dog.breed = 'Siberian Husky'
dog.name = 'Roger'
Object.preventExtensions(dog)
delete dog.name
dog // { breed: 'Siberian Husky' }

In this updated example, we add the property name to the dog object before calling preventExtensions(). After that, we use the delete operator to remove the name property. As a result, the dog object only contains the breed property.

Overall, the preventExtensions() method is useful when you want to make an object non-extensible, preventing the addition of new properties while still allowing modification and removal of existing properties.