目录Spread是浅拷贝,但不是引用,修改值时不会改变原对象。如果有相同的元素,可以进行替换,合并多个对象,解决Object.assign()整体替换缺失元素的缺陷。传播方法。巧合的是,这两个方法的符号是——...(俗称三点)Spread扩展运算符浅拷贝,但不是引用,修改值原对象不会改变将两个对象合并在一起constinput={a:1,b:2}constoutput={c:3}可以用...constinput={a:1,b:2}constoutput={...input,//分解到输出,浅拷贝c:3}console.log(input,output)//{a:1,b:2}{a:1,b:2,c:3}input.a=4console.log(input,output)//使用的是copy的形式,不是引用,所以没有改变原对象//{a:4,b:2}{a:1,b:2,c:3}如果有相同的元素就替换它constinput={a:1,b:2}constoutput={...input,a:3}console.log(input,output)//{a:1,b:2}{a:3,b:2}input.a=4console.log(input,output)//{a:4,b:2}{a:4,b:2}可以组合多个对象并添加另一个对象constinput={a:1,b:2}consttest={d:5}//将两个对象直接放入目标对象中constoutput={...input,...test,c:3}console.log(input,output)//{a:1,b:2}{a:1,b:2,d:5,c:3}input.a=4console.log(input,output)//{a:4,b:2}{a:1,b:2,d:5,c:3}解决Object.assign()整体替换缺失元素的缺陷。之前说过Object.assign()也可以合并元素,但是它有一些缺陷,不清楚的话可以看看ES6(6)——Object使用spread来替换重复的元素,因为是合并的,所以元素不会丢失,推荐使用consttarget={a:{b:{c:2}},e:5,f:6,h:10}constsource={...target,a:{b:{c:3}},e:2,f:3}console.log(source)//{a:{b:{c:3}},e:2,f:3,h:10}restrest运算符,这个可以保存对象剩下的元素组合成一个新的对象,原理和spread正好相反constinput={a:1,b:2,c:3,d:4,e:5}const{a,b,...rest}=inputconsole.log(a,b,rest)//12{c:3,d:4,e:5}ES6-ES10学习布局
