ES6 如何将属性从一个对象复制到另一个对象

ES6 如何将属性从一个对象复制到另一个对象

可以通过不同的方法将一个对象的属性复制到另一个对象中。以下是其中一些方法。

Object.assign(): 通过使用Object.assign()方法,将一个或多个源对象的所有可枚举属性复制到目标对象中。此方法返回修改后的目标对象。如果目标对象的属性与源对象的属性具有相同的键,则会将其覆盖。后面的源对象会覆盖前面的源对象的属性。Object.assign()只会将一个对象的可枚举和自有属性复制到另一个对象中。因此,它会调用源对象和目标对象的getter和setter。因此,它会分配属性而不是复制或定义新属性。合并的源对象可能包含getter,因此不适合将新属性合并到原型中。

语法:

Object.assign(target, ...sources)

示例:

JavaScript

<script> 
    let obj1 = { a: 1, b: 2 }; 
    let obj2 = { a: 3, c: 4 }; 
    let obj3 = { b: 5, d: 6 }; 
    
    // Target object itself is changed. 
    let targetobj1 = Object.assign(obj1, obj2); 
    
    // Here the obj1 and targetobj1 both are same 
    console.log(obj1); 
    console.log(targetobj1); 
    
    // Passing multiple objects and copy 
    // to the target obj 
    let targetobj2 = Object.assign(obj1, obj2, obj3); 
    console.log(obj1); 
    console.log(targetobj2); 
</script> 

输出:

{
    a: 3,
    b: 2,
    c: 4
}
{
    a: 3,
    b: 2,
    c: 4
}
{
    a: 3,
    b: 5,
    c: 4,
    d: 6
}
{
    a: 3,
    b: 5,
    c: 4,
    d: 6
}

使用****传播运算符****: 数组表达式或字符串可以使用扩展语法(…)来展开没有参数或多个参数(用于函数调用)或元素(用于数组字面量),或者对象表达式可以在没有或多个键值对(用于对象字面量)的情况下进行展开。

JavaScript

<script> 
    let obj1 = { a: 1, b: 2 }; 
    let obj2 = { a: 3, c: 4 }; 
    let obj3 = { b: 5, d: 6 }; 
    
    // (...) is syntax of spread operator 
    let targetobj = { ...obj1, ...obj2, ...obj3 }; 
    console.log(targetobj); 
</script> 
  

输出:

{
    a: 3,
    b: 5,
    c: 4,
    d: 6
}

通过使用for循环: 必须对源对象(即obj2)的属性进行迭代,并将属性与值分配给目标对象obj1。但是,如果我们只使用一个for循环,这种方法仅限于两个对象。

JavaScript

<script> 
    let obj1 = { a: 1, b: 2 }; 
    let obj2 = { a: 3, c: 4 }; 
    for (let key in obj2) { 
        obj1[key] = obj2[key]; 
    } 
    console.log(obj1); 
</script> 

输出:

{
    a: 3,
    b: 2,
    c: 4
}

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程