对于引用类型来说:
1、【赋值】是相当于赋值了指针,并没有重新开辟一个新的内存空间。
也就是说:不管是多深的层次,只要有变化都会相互影响。
举例子:
2、【浅拷贝】:会开辟新的内存空间,但是只是对于引用类型里属性类型为简单类型的数据来说的(不会相互影响)。对于属性类型为引用类型的数据来说是会复制他的指针指向,不会开辟新的内存空间(改变引用类型的值,会相互影响)。
例子:
操作第二层的引用类型的数据做了一个例子以为concat是深拷贝,因为都没有相互影响,其实是写错了,b[4]是引用类型,但是我直接给他赋值了,相当于给这个引用类型重新开辟了一个新的内存空间,所以不会影响到arr[4]。
例子如下:
对象的浅拷贝例子如下:
assign【深拷贝】:从里到外不管啥类型 都会重新开辟内存空间,所以不会相互影响。可以递归,可以loadsh里的方法,jquery的extend(深浅都可以)
网友评论