我们可以使用展开运算符(...)将不同的对象合并为一个对象,这也是合并两个或多个对象最常见的操作。这是合并两个对象的不可变方式,即最初用于合并的两个对象不会因副作用而发生任何改变。最后,我们得到了一个由这两个对象构造的新对象,同时它们保持不变。我们创建两个对象并合并:??constperson={name:"FrontendXiaozhi",age:24}constjob={title:"FrontendDevelopment",location:"Xiamen"}constemployee={...person,...job};console.log(employee);运行结果:{name:'前端小智',age:24,title:'前端开发',location:'厦门'}注:如果有Common属性,为比如他们都有location,第二个对象(job)的属性会覆盖第一个对象(person)的属性:constperson={name:"前端小智",location:"北京"}constjob={title:"前端开发",location:"厦门"}constemployee={...person,...job};console.log(employee);运行结果:{name:'前端小智',location:'厦门',title:'前端开发'}如果要合并两个以上的对象,最右边的对象会覆盖左边的对象。使用Object.assign()另一种合并JavaScript对象和组合两个或多个对象的常用方法是使用内置的Object.assign()方法:Object.assign(target,source1,source2,...);此方法将一个或多个源对象的所有属性复制到目标对象。就像展开运算符一样,重写时,会使用最右边的值:constperson={name:"前端小智",location:"北京",};constjob={title:"前端开发",location:"厦门",};constemployee=Object.assign(person,job);console.log(employee);运行结果:{name:'前端小智',age:24,location:'厦门',title:'前端开发'}同样,记住employee引用的对象是一个全新的对象,它没有链接到person或job引用的对象。浅合并和深合并在浅合并的情况下,如果源对象的属性之一是另一个对象,则目标对象将包含对源对象中存在的同一对象的引用。在这种情况下,不会创建新对象。我们调整之前的person对象,使用location作为对象本身...人,...工作};console.log(employee.location===person.location);运行结果:true我们可以看到person对象和employee对象中location对象的引用是一样的。事实上,spreadoperator(...)和Object.assign()都是浅合并。JavaScript没有开箱即用的深度合并支持。但是,第三方模块和库确实支持它,例如Lodash的.merge。总结在本文中,我们演示了如何在JS中合并两个对象。引入了spreadoperator(...)和Object.assign()方法,这两种方法都将两个或多个对象浅合并到一个新对象中,而不影响组成部分。~完了,我是耍玩儿,我去洗碗了,下次见!作者:AbhilashKakumanu译者:前端小智来源:stackak-objects-dynamically-in-javascript/本文转载自微信公众号“大招天下”,可通过以下二维码关注。转载本文请联系大千世界公众号。
