Vue动态添加、删除对象属性

这篇博客介绍了如何使用JavaScript操作对象,包括通过`object['属性名']`来动态添加对象属性,如果属性已存在则更新值,不存在则创建新属性。同时,也展示了如何使用`delete`关键字删除对象的属性。这对于理解和操作JavaScript对象的动态特性非常有帮助。

最近对对象相关操作处理比较多,然后发现对象还可以这么玩

    let student = { id: 1, name: '学生1', class: '001' };
    //通过student['对象新的属性key']来给对象添加新的属性,如果存在key则会替换key对应的值,不存在key对象会新增key和对应的值
    student['sex'] = '男';
    student['age'] = 18;
    console.log(student);
    //通过delete可直接删除对象的属性
    delete student.class;
    console.log(student);

在这里插入图片描述

Vue 3 中,动态添加对象属性的方式与 Vue 2 有所不同。由于 Vue 3 使用了 `Proxy` 和 `Reflect` 来实现响应式系统,因此对于响应式对象的处理更加灵活和自然。然而,在某些情况下仍需使用特定方法来确保新增属性是响应式的。 ### 使用 `value.[key] = newValue` 添加属性Vue 3 中,如果对象已经被 `reactive()` 或 `ref()` 包装为响应式对象,则可以直接通过 `.value`(针对 `ref`)或直接访问对象属性的方式添加属性,并且这些属性会自动成为响应式属性: ```javascript import { reactive } from 'vue'; const person = reactive({ name: 'Alice' }); person.age = 25; // 响应式属性 ``` 这种方式适用于大多数情况,因为 Vue 3 的响应式系统能够检测到属性添加并追踪依赖[^4]。 ### 使用 `Object.assign()` 更新整个对象 当需要批量更新对象属性时,可以使用 `Object.assign()` 方法创建一个新对象,并将新属性包含进去,从而触发 Vue 的响应式更新机制: ```javascript import { reactive } from 'vue'; const info = reactive({ name: 'Bob' }); Object.assign(info, { age: 30 }); ``` 这种方法本质上是通过替换整个对象的方式来更新属性,因此可以确保新增属性也具有响应性[^3]。 ### 使用 `Vue.set()` 的替代方式 在 Vue 2 中,通常使用 `this.$set()` 或 `Vue.set()` 来手动添加响应式属性。但在 Vue 3 中,这一方法已被弃用,取而代之的是更直观的 `watchEffect` 和 `watch` API。如果确实需要对嵌套对象进行响应式属性添加,建议使用 `reactive()` 包裹该嵌套对象: ```javascript import { reactive } from 'vue'; const user = reactive({ profile: { name: 'Charlie' } }); user.profile.age = 28; // 响应式属性 ``` 在这种结构下,只要 `profile` 是响应式的,其内部属性也会自动具备响应性[^2]。 ### 删除对象属性 若需删除对象属性但仍保持响应性,可直接使用 `delete` 操作符: ```javascript const person = reactive({ name: 'David', age: 35 }); delete person.age; ``` Vue 3 能够正确追踪此类操作,并更新相关依赖。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值