浅拷贝

首先,一个简单的例子来理解

a=[1,2,3]; b=a; a.push(4); b.push(5); a,b分别是多少? 

解答:b=a;是引用关系,不是赋值关系。所以不仅值相等,内存地址也相等,相对于原型是同一个地址。
a.push(4);相对于在原型中添加了4,
b.push(5);相对于在原型中添加了5。
a和b都是[1,2,3,4,5];

但是,简单的变量,内存小,我们直接复制不会发生引用

var a=123;
var b=a;
a=123456;
alert(a); //123456
alert(b); //123

//或者是

var a='afafas';
var b=a;
a='fgfdsdsgs';
alert(a); //fgfdsdsgs
alert(b); //afafas

而对于对象这种内存占用比较大的来说,直接让复制的东西等于要复制的,那么就会发生引用,因为这种复制,只是将复制出来的东西的指向指向了要复制的那个东西。

简单的说,就是两个都同时指向了一个空间,如果改变其中一个,另一个也会发生变化,这就发生了引用。

 

posted @ 2018-12-12 15:35  cindy—hmy  阅读(99)  评论(0编辑  收藏  举报