[TOC] #### 1. 前言 --- 除了設(shè)置對(duì)象的屬性特征,對(duì)屬性進(jìn)行控制,系統(tǒng)也提供了一些簡(jiǎn)化的 API 來進(jìn)行屬性控制 #### 2. 禁止添加屬性的 API --- ```javascript // 禁止在對(duì)象中添加屬性 Object.preventExtensions(user) // 無法給對(duì)象新增屬性 // 在非嚴(yán)格模式下不會(huì)拋出錯(cuò)誤,在嚴(yán)格模式下會(huì)拋出錯(cuò)誤 // user.site = 'doc.itqaq.com' // 判斷是否允許可以往對(duì)象中添加屬性 if (Object.isExtensible(user)) { user.site = 'm.waterflosserreview.com' } ``` #### 3. 封閉對(duì)象的 API 操作 --- 封閉對(duì)象: 不能添加和刪除屬性,也不能修改對(duì)象的屬性特征。會(huì)自動(dòng)設(shè)置屬性特征 configurable: false ```javascript // 封閉對(duì)象 Object.seal(user) // 判斷對(duì)象是否處于封閉狀態(tài) if (!Object.isSealed(user)) { user.site = 'add' delete user.age } ``` #### 4. 凍結(jié)對(duì)象的 API 操作 --- 封閉對(duì)象: 無法添加、刪除、修改屬性值,也不能修改對(duì)象的屬性特征。自動(dòng)修改屬性特征 writable: false,configurable: false ```javascript // 凍結(jié)對(duì)象 Object.freeze(user) // 判斷對(duì)象有沒有被凍結(jié) true 已凍結(jié) if (!Object.isFrozen(user)) { user.site = 'add' user.name = 'update' delete user.age } ```