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]
大家要注意:
上面这三个方法都只能实现「浅拷贝」,如果源对象中有引用类型的属性,则拷贝后的对象的该属性依然指向同一个引用,修改其中一个对象的该属性会对另一个对象产生影响。