关于赋值
赋值,即直接将变量相等,=,此时对于这两个变量来讲,指向了同个内存地址,所以,内存地址指向的内容一旦改变就会同步改变
关于 js 变量类型
基本数据类型: Number, Boolean, String, Symbol, null, undefined
引用类型: Object,诸如 array, function, object
关于浅拷贝
浅拷贝的理解就是两个变量的内存地址是不一样的,但对于不同类型的变量是有区别的:
基本数据类型: 一个变量的更改不会引起另一个变量的更改
引用类型:一个变量的内容更改会引起另一个变量的更改
const a = [{aa: 1}]
var b = a.map(item => { // 因为此时item是一个对象,所以是直接更改item.aa也会影响a
item.aa = 2
return item
})
console.log(b) // b: {aa: 2}
console.log(a) // a: {aa: 2}
实现一个浅拷贝
Object.assign
利用 Object.assign 能进行浅拷贝,仅拷贝一级 key 的 value 值,如果你对原值进行二级以上的 value 值的拷贝,则两个变量都会同时受到影响
展开运算符
var a = {aa: 1}
var b = {...a}
深拷贝概念
浅拷贝的理解就是两个变量的内存地址是不一样的,一般更加应用于引用类型
引用类型:一个变量的内容更改不会引起另一个变量的更改,因为内容对应的内存地址不一样,所以取到的值也就不一样
实现一个深拷贝
简单版
var obj = {a: 1}
function clone(origin)