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);//张同学

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注