7.3.15 TestIntegrityLevel ( O, level )
抽象操作 TestIntegrityLevel 用于确定对象的自身属性集是否是固定的。 此抽象操作执行以下步骤:
- 断言: Type(O) 为 Object 类型。
- 断言:level 为 "sealed" 或 "frozen"。
- 使 status 变为 ? IsExtensible(O)。
- 如果 status 为 true,则返回 false。
- 注意如果对象是可扩展的,则不会检查其属性。
- 使 keys 变为 ? O.[[OwnPropertyKeys]]()。
- 对每个元素 k 的 keys 重复,
a. 使 currentDesc 变为 ? O.[[GetOwnProperty]](k)。
b. 如果 currentDesc 不是 undefined,那么
i. 如果 currentDesc.[[Configurable]] 为 true,则返回 false。
ii. 如果 level 是 "frozen" 并且 IsDataDescriptor(currentDesc) 为 true, 那么
如果 currentDesc.[[Writable]] 为 true,返回 false。
返回 true。