[TOC] #### 1. 前言 --- 除了设置对象的属性特征,对属性进行控制,系统也提供了一些简化的 API 来进行属性控制 #### 2. 禁止添加属性的 API --- ```javascript // 禁止在对象中添加属性 Object.preventExtensions(user) // 无法给对象新增属性 // 在非严格模式下不会抛出错误,在严格模式下会抛出错误 // user.site = 'doc.itqaq.com' // 判断是否允许可以往对象中添加属性 if (Object.isExtensible(user)) { user.site = 'www.itqaq.com' } ``` #### 3. 封闭对象的 API 操作 --- 封闭对象: 不能添加和删除属性,也不能修改对象的属性特征。会自动设置属性特征 configurable: false ```javascript // 封闭对象 Object.seal(user) // 判断对象是否处于封闭状态 if (!Object.isSealed(user)) { user.site = 'add' delete user.age } ``` #### 4. 冻结对象的 API 操作 --- 封闭对象: 无法添加、删除、修改属性值,也不能修改对象的属性特征。自动修改属性特征 writable: false,configurable: false ```javascript // 冻结对象 Object.freeze(user) // 判断对象有没有被冻结 true 已冻结 if (!Object.isFrozen(user)) { user.site = 'add' user.name = 'update' delete user.age } ```