js对象浅拷贝方法

花园

javascript对象的浅拷贝有以下几种方法:

1、Object.assign()方法:将源对象的所有可枚举属性复制到目标对象中,倘若目标对象中存在同名属性,则会覆盖目标对象中的属性值。

let obj1 = { a: 1, b: 2};
let obj2 = Object.assign({}, obj1);
console.log(obj2); // { a:1,b:2 }

2、扩展运算符(…):将源对象的所有可枚举属性展开到目标对象中,如果目标对象中存在同名属性,则会覆盖目标对象中的属性值。

let obj1 = { a: 1, b: 2 };
let obj2 = { ...obj1 };
console.log(obj2); // { a: 1, b: 2 }

3、Array.prototype.slice()方法:只能用于数组对象,将源数组的所有元素复制到一个新数组中。

let arr1 = [1,2,3];
let arr2 = arr1.slice();
console.log(arr2); // [1,2,3]

大家要注意:

上面这三个方法都只能实现「浅拷贝」,如果源对象中有引用类型的属性,则拷贝后的对象的该属性依然指向同一个引用,修改其中一个对象的该属性会对另一个对象产生影响。