收藏
回答

Object.freeze小程序中不能用吗?

使用Object.freeze后,在控制台打印出来的数据仍然有set和get方法!,是什么原因?

回答关注问题邀请回答
收藏

1 个回答

  • 微盟
    微盟
    2023-07-28

    MDN的解释:Object.freeze() 静态方法可以使一个对象被冻结。冻结对象可以防止扩展,并使现有的属性不可写入和不可配置。被冻结的对象不能再被更改:不能添加新的属性,不能移除现有的属性,不能更改它们的可枚举性、可配置性、可写性或值,对象的原型也不能被重新指定。freeze() 返回与传入的对象相同的对象。

    而你所说的 setget 说明该属性本身是使用 settergetter 函数,当使用 = 赋值时,调用的是 setter 函数,当取值时,调用的是 getter 函数

    2023-07-28
    有用
    回复 2
    • 慕、
      慕、
      2023-07-28
      不是啊, 我的一个[{K:12}]格式的数据,使用Object.freeze()方法,正常是应该去掉vue中数据的set和get的, 为什么打印出来,他还是把我所有的数据都设置了set和get呢?
      2023-07-28
      回复
    • 微盟
      微盟
      2023-07-28回复慕、
      那你可能处理顺序不太对,应该先冻结,再赋值到this实例上
      2023-07-28
      回复
登录 后发表内容