js对象深度复制(不是引用)
面向对象开发中,对象(object)的直接赋值都是引用而已,新对象值发生变化原对象也会出现相应的变化。
例如:
var student = {name:'李同学'};
var newStudent = student;
newStudent.name = '张同学';
console.log(student.name); //张同学,新对象值变化,原对象值相应变化
但是有些时候开发并不希望出现这类问题,因此就需要复制而不是赋值而已。我们可以通过json的转换来实现复制。
var student = {name:'李同学'};
var newStudent = JSON.parse(JSON.stringify(student)); //将对象转换成json字符串再转回对象
newStudent.name = '张同学';
console.log(student.name); //李同学
console.log(newStudent.name);//张同学