# The Object seal() method

> Learn how the JavaScript Object.seal() method locks an object so you cannot add or remove properties, while still letting you change existing ones.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2019-04-14 | Topics: [JavaScript](https://flaviocopes.com/tags/js/) | Canonical: https://flaviocopes.com/javascript-object-seal/

The [JavaScript](https://flaviocopes.com/javascript/) seal() method of the Object object takes an object as argument, and returns the same object. The object passed as argument is mutated and it's now an object that will not accept new properties. New properties *can't* be added, and existing properties *can't* be removed, but existing properties *can* be changed.

Example:

```js
const dog = {}
dog.breed = 'Siberian Husky'
Object.seal(dog)
dog.breed = 'Pug'
dog.name = 'Roger' //TypeError: Cannot add property name, object is not extensible
```

The argument passed as argument is also returned as argument, hence `dog` === `myDog` (it's the same exact object).

Similar to [`Object.freeze()`](https://flaviocopes.com/javascript-object-freeze/) but does not make properties non-writable. In only prevents to add or remove properties.

Similar to [`Object.preventExtensions()`](https://flaviocopes.com/javascript-object-preventextensions/) but also disallows removing properties:

```js
const dog = {}
dog.breed = 'Siberian Husky'
dog.name = 'Roger'
Object.seal(dog)
delete dog.name //TypeError: Cannot delete property 'name' of #<Object>
```
