vue 中使用freeze出现的问题

本文探讨了Vue中使用Object.freeze冻结对象以阻止属性修改的方法,并分析了这如何影响响应式系统的追踪机制。通过实例展示了冻结对象后点击按钮试图修改属性时的行为差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<template>
<!-- import { Vue } from 'vue/types/vue'; -->
<div>
  <div class="one">
    <h1>
      {{number}}
    </h1>
  </div>
  <span>
    {{obj1.foo}}
    (被freeze)
  </span>
  <p>
    {{obj2.boo}}
    (正常)
  </p>
  <p>
    {{obj3}}
    (正常)
  </p>
  <!-- 两个都不能修改??为什么?第二个理论上应该是可以修改的-->
  <button @click="obj1.foo='yyy';obj2.boo='bbb'">点我修改12</button>
  <!-- bbb可修改,yyy不可改 -->
  <button @click="obj2.boo='bbb';obj1.foo='yyy'">点我修改21</button>
  <!-- 两个都可以修改 -->
  <button @click="obj2.boo='ccc';obj3='444'">点我修改23</button>
</div>
</template>

<script>
var obj1 = {
  foo: 'xxx'
}
// 使用 Object.freeze() 来防止已有属性被修改,这也意味着响应式系统无法追踪变化。
Object.freeze(obj1)

var obj2 = {
  boo: 'aaa'
}
export default {
  name: 'lianxi',
  data () {
    return {
      number: '123',
      obj1: obj1,
      obj2: obj2,
      obj3: 333
    }
  }
}

</script>

<style scoped>
h1 {
  font-weight: normal;
  color: #42b983;
}

</style>

看vue的手册里面讲,使用 Object.freeze() 来防止已有属性被修改,这也意味着响应式系统无法追踪变化。
然后使用的时候,出现了如上情况。不知道什么原因,如有知悉,请告知。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值