68 lines
1.7 KiB
Markdown
68 lines
1.7 KiB
Markdown
---
|
||
title: Object Freeze
|
||
localeTitle: 对象冻结
|
||
---
|
||
## 对象冻结
|
||
|
||
`Object.freeze()`方法冻结了一个对象。冻结的对象会_阻止您_ :
|
||
|
||
* 添加新属性
|
||
* 从中删除现有的特性
|
||
* 更改其现有属性的可枚举性,可配置性或可写性
|
||
|
||
### 句法
|
||
|
||
```javascript
|
||
Object.freeze(obj)
|
||
```
|
||
|
||
### 参数
|
||
|
||
`obj`
|
||
|
||
* 要冻结的对象。
|
||
|
||
### 返回
|
||
|
||
冻结的物体。
|
||
|
||
### 重要的提示
|
||
|
||
尝试添加,删除或修改冻结对象的属性将导致失败。此失败将是静默或抛出`TypeError` (如果启用了严格模式)。另外, `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) |