-
Notifications
You must be signed in to change notification settings - Fork 65
/
Copy path对象api.js
50 lines (41 loc) · 1.17 KB
/
对象api.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// 封闭对象的api属性(不能往对象里面添加属性,不能删除,不能修改)seal writable可单向修改为false,但不可以由false改为true
const user = {
name: 'dada',
age: 1
};
console.log(Object.getOwnPropertyDescriptors(user));
/**
* {
* name: {
* value: 'dada',
* writable: true,
* enumerable: true,
* configurable: true
* },
* age: { value: 1, writable: true, enumerable: true, configurable: true }
* }
*/
// 封闭对象
Object.seal(user);
delete user.name; // 无效
user.da = 'da'; // 无效
console.log(Object.isSealed(user)); // 查看 是否 处于封闭状态
console.log(user);
/**
* true
{ name: 'dada', age: 1 }
*/
// 冻结对象的api (freeze) 属性不能被修改 不能被删除 不允许遍历 不允许定义对象特征(writable等) seal上再加上writable:false
// 函数Object.seal()中也许还可以修改属性值以及修改属性的特性writable(true-->false), 但是在Object.freeze()中,这些都干不了。
const user1 = {
name: 'ddd',
age: 1
}
Object.freeze(user1);
user1.name = 'li';
console.log(user1);
console.log(Object.isFrozen(user1))
/**
* { name: 'ddd', age: 1 }
true
*/