Object.assign() 是 ECMAScript 2016 标准中新增加的方法之一。它可以将多个对象的属性合并到一个对象中,并返回合并后的对象。这个方法在前端开发中非常有用,可以用来合并对象、拷贝对象等。在本篇文章中,我们将详细介绍 Object.assign() 方法的使用方式、参数以及一些实例,帮助读者更好地掌握和应用这个方法。
语法
Object.assign() 的语法如下:
Object.assign(target, ...sources)
这个方法接受两个或者多个参数,第一个参数是目标对象,后面的参数是源对象。它会将源对象的所有属性和方法复制到目标对象中,如果遇到同名属性,则会覆盖目标对象中的属性。
需要注意的是,Object.assign() 方法只复制对象的自有属性。如果从原型继承了属性,那么这些属性不会被复制到目标对象中。
参数使用说明
target
target 是合并后的目标对象。它将会被修改,且不会被返回,所以要注意合并时的顺序。
let target = { a: 1, b: 2 }; let source = { b: 4, c: 5 }; Object.assign(target, source); console.log(target); // { a: 1, b: 4, c: 5 }
sources
sources 是一个或多个源对象,它们的属性会被拷贝到目标对象中。如果传入的源对象是 null 或者 undefined,那么它们将被忽略。
// javascriptcn.com 代码示例 let target = { a: 1 }; let source1 = { b: 2 }; let source2 = { c: 3 }; let source3 = null; let source4 = undefined; Object.assign(target, source1, source2, source3, source4); console.log(target); // { a: 1, b: 2, c: 3 }
示例
示例1:合并对象
let target = { a: 1, b: 2 }; let source = { b: 4, c: 5 }; let result = Object.assign(target, source); console.log(target); // { a: 1, b: 4, c: 5 } console.log(result); // { a: 1, b: 4, c: 5 }
这个示例中,目标对象和源对象都包含属性 b。在合并时,目标对象中的属性 b 被源对象中的属性 b 覆盖了。最终的目标对象包含了 a、b 和 c 三个属性。
示例2:拷贝对象
let source = { a: { b: 1 } }; let target = Object.assign({}, source); console.log(target); // { a: { b: 1 } } console.log(source === target); // false console.log(source.a === target.a); // true
这个示例中,将源对象拷贝到目标对象中,生成了一个新的对象。这个方法可以用于浅拷贝对象,但注意到源对象中的属性是对象时,仅存在新对象的属性值,而不是源对象的属性值的深层拷贝。
总结
Object.assign() 可以将多个对象的属性合并到一个对象中,并返回合并后的对象。这个方法在前端开发中非常有用,可以用来合并对象、拷贝对象等。需要注意的是,Object.assign() 方法只复制对象的自有属性,如果从原型继承了属性,那么这些属性不会被复制到目标对象中。在使用时需要注意两个参数的顺序,以及属性覆盖的问题。同样的,Object.assign() 方法在深度拷贝时,因为仅生成新对象类的属性,对源对象另一属性的影响可以在对象的深度拷贝中发现。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6530fba07d4982a6eb28fa55