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