今天看了对象的赋值,整理一下分享出来,希望能给需要的同仁一点点帮助。
1. 对象赋值方法是,Object.assign(target, source) 实际的底层代码理解如下:
function assign(target, ...sources) {
// 遍历获得传进来的所有值
for(let sourse of sourses){
for (let key of Object.keys(source)){
target[key] = source[key]
}
}
return target;
}
Object.assign({x:1},{x:2, y:3,z:4}); //{x: 2, y: 3, z: 4} 后面的值会将前面赋的值替换
以上这种方式的特点是:当出现相同的属性时,后面的属性值会覆盖前面的值。
2. 第二种方法:merge(target, sources)
以下这种方式的特点是:不覆盖已有的属性。
function merge(target,...sources){
for(let course of sources){
console.log(course);
for (let key of Object.keys(course)){
console.log(key);
if(!(key in target)){
target[key] = course[key]
}
}
}
return target;
}
merge({x:1},{x:2, y:3},{z:4}); // {x: 1, y: 3, z: 4} ,前面的属性没有被覆盖
完结!!