1.对象属性追加到目标对象中,如果目标对象有这个属性就会覆盖已有的属性;object.assign(target,object,object...)
let aa={
a:"5",
b:"10"
}
let bb={
a:"15",
c:"20"
}
object assign(aa,bb)
console.log(aa) // {a:"15",b:"10",c:"20"}
2.他是浅拷贝,如果目标对象里面的属性是对象将不会改变,属性对象,但是追加的对象有这个属性就会覆盖
let aa={a:{b:5}};
let bb={a:{c:6}};
object.assign(aa,bb);
console.log(aa.a.c) //6
3.数组拷贝,只是下标位置替换;
let zz=[1,2,3,4,5];
let bb=[6,7,8,9,10];
object.assign(zz,bb);
console.log(zz) //6,7,8,9,10
4.取值函数的处理
Object.assign只能进行值的复制,如果要复制的值是一个取值函数,那么将求值后再复制。
const source = {
get foo() { return 1 }
};
const target = {};
Object.assign(target, source)
// { foo: 1 }
网友评论