【问题标题】:What are the usecases for Object.freeze() and Object.seal() in javascript?javascript 中 Object.freeze() 和 Object.seal() 的用例是什么?
【发布时间】:2022-12-11 10:59:07
【问题描述】:

我做了一些搜索,发现 Javascript 对象可以是 frozensealed,这意味着它们不能分别被修改或添加新属性。

我明白什么这些方法可以,但不是为什么人们会想在代码库中使用它们。

我对为什么使用 freeze() 的一种猜测是为了防止意外修改变量类别中的错误:默认情况下使用 const 声明变量可以防止很多此类错误(尽管 const 仅适用于绑定,而不适用于变量本身)并施加非常小的句法负担。另一方面,在每个声明的对象上调用 .freeze() 似乎是非常不切实际的,而且我从未见过代码库这样做。

但是,对于何时使用seal(),我什至没有一个可行的猜测。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    一种用途是创建constants。假设您有一个屋顶应用程序并且有四种屋顶类型:

    const roofPrices = Object.freeze({ metal: 200, slate: 350, clay: 150, solar: 400});

    通过冻结对象,您可以确保不会无意中更改价格,或者通过密封对象,您不会无意中添加或删除新的“类型”。

    【讨论】:

      【解决方案2】:

      在 JavaScript 中,Object.freeze() 方法用于防止修改现有属性和向对象添加新属性。这意味着该对象变为只读且不能以任何方式更改。 Object.freeze() 对于创建应保持不变且不被程序的任何部分修改的对象很有用。

      另一方面,Object.seal() 方法用于防止向对象添加新属性,但允许修改现有属性。这意味着该对象仍然是可变的,但不能扩展。 Object.seal() 对于创建具有一组固定属性但这些属性的值可能需要更改的对象很有用。

      通常,Object.freeze() 和 Object.seal() 都用于创建具有一组固定和已知属性的对象,这有助于防止意外更改并提高程序的可靠性和可预测性。这些方法也可用于创建应在程序中用作常量的对象,例如配置对象或查找表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-10
        • 2015-10-19
        • 2019-09-10
        相关资源
        最近更新 更多