首先,有这个对象
1. let a = { 2. id: 1, 3. name: '张三', 4. age: 18, 5. sex: 0 6. }
需求:同时修改name,id,并添加一个新属性c
常规写法:
1. a.id = 2; 2. a.name = '李四'; 3. a.c = 1;
方法1:使用Object.assign()
Object.assign()常用来拷贝合并对象,相同属性替换,不同属性新增
写法:
a = Object.assign(a,{id:2,name:'李四',c:1})
方法2:使用Object.defineProperties()
1. object:对其添加或修改属性的对象,可以是本地对象或 DOM 对象。 2. descriptors:包含一个或多个描述符对象,每个描述符对象描述一个数据属性或访问器属性。
写法:
1. Object.defineProperties(a, { 2. id: { 3. value: 2 4. }, 5. name: { 6. value: '李四' 7. }, 8. c:{ 9. value: 1 10. } 11. })
而且这两种写法也不会使vue的reactive失去响应