1、对象防篡改
为了防止我们的对象被误改,有时候需要把它保护起来。
1)、Object.seal()
- Object.seal()会封闭一个对象,禁止添加新属性或是删除已有属性,不过当前已有属性可以进行值的改变。
- 判断一个对象是否被封闭可以使用Object.isSealed() ```javascript const obj = { name: ‘小明’ };
Object.seal(obj); console.log(‘isSealed’, Object.isSealed(obj));
delete(obj.name); console.log(‘delete’, obj);
obj.age = 12; console.log(‘add’, obj);
obj.name = ‘小红’; console.log(‘changeValue’, obj); // 结果: // isSealed true // delete {name: “yin”} // add {name: “yin”} // changeValue {name: “小红”}
- 而在严格模式下进行增删时,则会报错

<a name="3fEap"></a>
### 2)、Object.freeze()
- Object.freeze()则是冻结一个对象,除了Object.seal()的不能增删属性外,也不能修改已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。
- 判断一个对象是否被封闭可以使用Object.isFrozen()。

<a name="Inw4W"></a>
### 3)、**Object.defineProperty()**
- Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。
- 语法:Object.defineProperty(obj, prop, descriptor)
- 如下图,通过设置writable属性可以防止值被修改

<a name="nOpaP"></a>
# 随机获取布尔值(true/false)
```javascript
const randomBoolean = () => Math.random() >= 0.5;
检查是否为工作日
const isWeekday = (date) => date.getDay() % 6 !== 0;