1、赋值:使用"="运算符将一个变量的值赋给另一个变量。这只是将原始值或引用从一个变量复制到另一个变量,它们最终引用同一个内存地址。修改其中一个变量的值会影响到另一个变量。
let a = 5;
let b = a; // 将a的值赋给b
a = 10;
console.log(b); // 输出为5,b的值并没有改变
2、浅拷贝:通过复制对象的引用来创建一个新对象。新对象与原始对象共享相同的属性和值,但是它们引用的是不同的内存地址。当修改原始对象的某个属性时,新对象的相应属性也会被修改。
let obj1 = { a: 1, b: 2 };
let obj2 = Object.assign({}, obj1); // 创建obj1的浅拷贝
obj1.a = 10;
console.log(obj2.a); // 输出为1,obj2的值没有改变
3、深拷贝:创建一个完全独立的对象副本,包括它的所有属性和嵌套属性。当修改原始对象的任何属性时,深拷贝后的对象不会受到任何影响。
let obj1 = { a: 1, b: { c: 2 } };
let obj2 = JSON.parse(JSON.stringify(obj1)); // 创建obj1的深拷贝
obj1.b.c = 10;
console.log(obj2.b.c); // 输出为2,obj2的值没有改变