当谈论 JavaScript 中的 Object.sealObject.freeze 方法时,我会强调它们之间的区别:

  1. Object.seal

    • Object.seal 方法用于封闭对象,使得对象不可扩展(即无法添加新属性),并且将所有已有属性设置为不可配置。但已有属性的值仍然可以修改。
    const sealedObj = {
      prop1: 1,
      prop2: 'value'
    };
    
    Object.seal(sealedObj);
    
    sealedObj.prop3 = true; // 无法添加新属性
    sealedObj.prop1 = 2; // 已有属性值可以修改
    delete sealedObj.prop2; // 已有属性不可删除
    
  2. Object.freeze

    • Object.freeze 方法的作用更为严格,它不仅会将对象设为不可扩展和属性不可配置,还会将已有属性的值设为不可写(即不可修改)。
    const frozenObj = {
      prop1: 1,
      prop2: 'value'
    };
    
    Object.freeze(frozenObj);
    
    frozenObj.prop3 = true; // 无法添加新属性
    frozenObj.prop1 = 2; // 已有属性值不可修改
    delete frozenObj.prop2; // 已有属性不可删除
    

所以,关键的区别在于 Object.freezeObject.seal 的保护更加严格,不仅限制了属性的添加和配置,还阻止了属性值的修改。在面试中,我会强调这两种方法的差异,并根据项目需求和数据的安全性来选择合适的方法来保护对象。

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.