吐槽: 乌烟瘴气的问题库,什么回答都是一个又一个的copy,而且还是废话特别多的玩意。还不如自己写一些问题总结,纯手工打造,不含注水货。
一、浅拷贝的方式
- 单层的数组/对象的循环赋值。
- 使用内置的方法: Object.create( obj )方法。
推荐方式2,如:
let person = {
name:'Jake',
age:18,
girlfriends:['Lisa','Jenny','Nancy']
}
let personCopy = Object.create(person);
二、深拷贝的方式
- 递归循环赋值,直到所有的数组/对象内的元素赋值完毕。就是把引用变量里面的基本变量挨个遍历赋值。
- 结合使用Json.prise() 和 Json.stringify() 进行深拷贝。
推荐方式2,如:
let person = {
name:'Jake',
age:18,
girlfriends:['Lisa','Jenny','Nancy']
}
let personCopy = Json.parse(Json.stringify(person));
//简单的类型转换过程:Object -> string -> Object
注释:
- 引用变量:数组、对象。
- 基本变量:Number、string等非数组、对象变量。