10-保护结构

103 阅读1分钟

1.防扩展:

1.1什么是: 禁止给对象添加新属性

1.2如何:

Object.preventExtensions(对象)
//        阻止   扩展

保护结构1.jpg

1.3问题: 只防添加,不防删除

保护结构2.jpg

2.密封:

2.1什么是:

既禁止添加新属性,又禁止删除现有属性

2.2如何:

Object.seal(对象)
	  //密封

保护结构3.jpg

保护结构4.jpg

2.3 seal做了2件事:

  1. 会自动调用preventExtensions(),先禁止添加
  2. 会自动遍历对象中每个属性,自动设置每个属性的configurable:false,所有属性禁止删除。

2.4强调:

  1. 如果用了seal(),则既不用写preventExtensions(),又不用写所有的configurable:false。
  2. 虽然用了seal(),虽然不能添加删除属性,但是属性值还是可以修改的。

2.5一般,保护到密封级别就够了!

3.冻结:

3.1什么是:

既禁止添加删除属性,又禁止修改一切属性值。

3.2如何:

Object.freeze(对象)

//      冻结

保护结构5.jpg

3.3 3件事:

  1. 会自动调用preventExtensions(),先禁止添加
  2. 会自动遍历对象中每个属性,自动设置每个属性的configurable:false,所有属性禁止删除。
  3. 会自动遍历对象中每个属性,自动设置每个属性的writable:false,所有属性只读