介绍
JavaScript 是一种支持面向对象编程的语言,对象是 JavaScript 中最重要的概念之一。Object.assign() 是 ES6 中提供的一个用于对象合并的方法,可以将多个对象合并成一个对象。
使用方法
Object.assign() 方法接收两个或更多个参数,第一个参数是目标对象,后面的参数则是源对象,它们的属性会被复制到目标对象中。如果多个源对象拥有同名属性,则后面的属性会覆盖前面的属性。
let target = { a: 1, b: 2 }; let source = { b: 3, c: 4 }; let result = Object.assign(target, source); console.log(target); // {a: 1, b: 3, c: 4} console.log(result); // {a: 1, b: 3, c: 4}
深拷贝
当源对象或目标对象中包含嵌套的对象或数组时,Object.assign() 方法并不能实现深拷贝,而且会在目标对象中简单地赋值一份源对象的引用。这意味着,在修改目标对象时,源对象中的相应属性也会被修改。
let target = { a: { b: 1 } }; let source = { a: { c: 2 } }; Object.assign(target, source); console.log(target.a.b); // 1 console.log(target.a.c); // 2 console.log(source.a.b); // undefined
为了实现深拷贝,可以使用库或自己写递归函数进行实现。
克隆对象
使用 Object.assign() 能够简单地实现对象的克隆。
let obj = { a: { b: 1 } }; let clone = Object.assign({}, obj); console.log(obj.a.b); // 1 console.log(clone.a.b); // 1 console.log(obj === clone); // false console.log(obj.a === clone.a); // true
合并数组
使用 Object.assign() 能够在 ES6 中简单地实现数组合并。
let arr1 = [1, 2, 3]; let arr2 = [4, 5, 6]; let arr3 = [...arr1, ...arr2]; console.log(arr3); // [1, 2, 3, 4, 5, 6]
总结
Object.assign() 使得在 JavaScript 中合并多个对象变得非常容易。注意,也可以合并数组和其他可迭代对象。然而,在进行深拷贝时,需要使用专门的库或递归函数。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6543e0627d4982a6ebdde951