当谈论 JavaScript 中的 Object.seal
和 Object.freeze
方法时,我会强调它们之间的区别:
-
Object.seal:
Object.seal
方法用于封闭对象,使得对象不可扩展(即无法添加新属性),并且将所有已有属性设置为不可配置。但已有属性的值仍然可以修改。
const sealedObj = { prop1: 1, prop2: 'value' }; Object.seal(sealedObj); sealedObj.prop3 = true; // 无法添加新属性 sealedObj.prop1 = 2; // 已有属性值可以修改 delete sealedObj.prop2; // 已有属性不可删除
-
Object.freeze:
Object.freeze
方法的作用更为严格,它不仅会将对象设为不可扩展和属性不可配置,还会将已有属性的值设为不可写(即不可修改)。
const frozenObj = { prop1: 1, prop2: 'value' }; Object.freeze(frozenObj); frozenObj.prop3 = true; // 无法添加新属性 frozenObj.prop1 = 2; // 已有属性值不可修改 delete frozenObj.prop2; // 已有属性不可删除
所以,关键的区别在于 Object.freeze
比 Object.seal
的保护更加严格,不仅限制了属性的添加和配置,还阻止了属性值的修改。在面试中,我会强调这两种方法的差异,并根据项目需求和数据的安全性来选择合适的方法来保护对象。
Was this helpful?
0 / 0