作者:AbhilashKakumanu译者:前端小智来源:stackak有梦想,有干货,微信搜索【大千世界】关注这个洗碗盘的清晨智慧。本文已收录到GitHubhttps://github.com/qq449245884/xiaozhi,里面有完整的测试站点、资料和我的一线厂商访谈系列文章。我们可以使用展开运算符(...)将不同的对象合并为一个对象,这是合并两个或多个对象最常见的操作。这是合并两个对象的不可变方式,即最初用于合并的两个对象不会因副作用而发生任何改变。最后,我们得到了一个由这两个对象构造的新对象,同时它们保持不变。我们创建两个对象并合并:??constperson={name:"前端小智",age:24}constjob={title:"前端开发",location:"厦门"}constemployee={...person,...job};console.log(employee);运行结果:{name:'前端小智',age:24,title:'前端开发',location:'厦门'}注:如果这两个对象它们之间有共同的属性,比如它们都有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);Operationresult:{name:'前端小智',age:24,location:'Xiamen',title:'前端开发'}再次提醒,employee引用的对象是一个全新的对象,不会与person或job引用的对象关联。浅合并和深合并在浅合并的情况下,如果源对象的属性之一是另一个对象,则目标对象将包含对源对象中存在的同一对象的引用。在这种情况下,不会创建新对象。我们调整之前的person对象,使用location作为对象本身"}constemployee={...person,...job};console.log(employee.location===person.location);运行结果:true我们可以看到person和employee对象中location对象的引用是一样的。事实上,spreadoperator(...)和Object.assign()都是浅合并。JavaScript没有开箱即用的深度合并支持。但是,第三方模块和库确实支持它,例如Lodash的.merge。总结在本文中,我们演示了如何在JS中合并两个对象。引入了spreadoperator(...)和Object.assign()方法,这两种方法都将两个或多个对象浅合并到一个新对象中,而不影响组成部分。~最后,我是知婉知,我去洗碗了,下次见!代码部署后可能存在的bug,无法实时获知。事后为了解决这些bug,花费了大量的时间在日志调试上。顺便推荐一个好用的bug监控工具Fundebug。原文:https://stackak.com/merge-pro...交流有梦想,有干货,微信搜索【大千世界】关注这位大清早还在洗碗的洗碗智慧。本文GitHubhttps://github.com/qq44924588...已收录,有完整的测试站点、资料和我的一线厂商访谈系列文章。
