68 lines
2.4 KiB
Markdown
68 lines
2.4 KiB
Markdown
|
---
|
|||
|
title: Object Freeze
|
|||
|
localeTitle: Замораживание объекта
|
|||
|
---
|
|||
|
## Замораживание объекта
|
|||
|
|
|||
|
Метод `Object.freeze()` объект. Замороженный объект не _позволит вам_ :
|
|||
|
|
|||
|
* Добавление к нему новых свойств
|
|||
|
* Удаление существующих от него прав
|
|||
|
* Изменение перечислимости, конфигурируемости или возможности записи существующих свойств
|
|||
|
|
|||
|
### Синтаксис
|
|||
|
|
|||
|
```javascript
|
|||
|
Object.freeze(obj)
|
|||
|
```
|
|||
|
|
|||
|
### параметры
|
|||
|
|
|||
|
`obj`
|
|||
|
|
|||
|
* Объект для замораживания.
|
|||
|
|
|||
|
### Возвращает
|
|||
|
|
|||
|
Замороженный объект.
|
|||
|
|
|||
|
### Важная заметка
|
|||
|
|
|||
|
Попытка добавления, удаления или изменения свойств замороженного объекта приведет к сбою. Этот отказ будет либо тихим, либо брошенным `TypeError` (если включен Strict Mode). Кроме того, `Object.freeze()` является неглубокой операцией. Это означает, что вложенный объект замороженного объекта может быть изменен.
|
|||
|
|
|||
|
### пример
|
|||
|
|
|||
|
```javascript
|
|||
|
// Create your object
|
|||
|
let person = {
|
|||
|
name: 'Johnny',
|
|||
|
age: 23,
|
|||
|
guild: 'Army of Darkness',
|
|||
|
hobbies: ['music', 'gaming', 'rock climbing']
|
|||
|
}
|
|||
|
|
|||
|
// Modify your object
|
|||
|
person.name = 'John'
|
|||
|
person.age = 24
|
|||
|
person.hobbies.splice(1,1)
|
|||
|
delete person.guild
|
|||
|
|
|||
|
// Verify your object has been modified
|
|||
|
console.log(person) // { name: 'John', age: 24, hobbies: ['music', 'rock climbing']
|
|||
|
|
|||
|
// Freeze your object
|
|||
|
Object.freeze(person)
|
|||
|
|
|||
|
// Verify that your object can no longer be modified
|
|||
|
person.name = 'Johnny' // fails silently
|
|||
|
person.age = 23 // fails silently
|
|||
|
console.log(person) // { name: 'John', age: 24, hobbies: ['music', 'rock climbing']
|
|||
|
|
|||
|
// The freeze is "shallow" and nested objects (including arrays) can still be modified
|
|||
|
person.hobbies.push('basketball')
|
|||
|
consol.log(person.hobbies) // ['music', 'rock climbing', 'basketball']
|
|||
|
```
|
|||
|
|
|||
|
#### Дополнительная информация:
|
|||
|
|
|||
|
[Документация MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)
|