JavaScript这门语言,有两种数据类型,一种是基本数据类型,包括(number,string,null,undefined,Boolean,symbol),另一种是复杂数据类型包括Object;
而对于基本数据类型来说,复制一个变量值,本质上就是copy了这个变量。一个变量值的修改,不会影响到另外一个变量。看一个简单的例子。
let val = 123;
let copy = val;
console.log(copy); //123
val = 456; //修改val的值对copy的值不产生影响
console.log(copy); //123
而复杂数据类型的复制与基本数据类型的复制不同,当我们将复杂数据类型的变量复制给另外一个变量时,实际是对指针的复制,两个变量的指向地址是相同的,所以当修改一个对象变量名的值时,会对另外一个对象的变量名的值产生影响。所以这里就要谈到深拷贝,深拷贝不会对原对象产生影响,深拷贝的方法:JSON.parse(JSON.stringify(obj));即先把json对象转换为json字符串,然后在把json字符串转换为json对象。另外一种方法是用Object.assign()这种方法,我还没有测试是否可行。