复制变量值
值类型的复制变量值:
图片发自简书App
上图中以num2为变量名的变量,其变量值是通过复制num1的变量值得到的。换而言之,num2和num1在内存中都储存着数值5,且前者是后者的副本。
图片发自简书App
引用类型的复制变量值:
图片发自简书App
上图中,以obj2为变量名的变量,其变量值同样是通过复制obj1的值得到的,但是复制的结果不是储存在内存中的一个对象,而是一个指针,这个指针指向obj1的值。这样一来,obj1与obj2在引用访问时,其实是对同一个储存在内存中的对象的引用进行操作。
图片发自简书App
var obj1=new object();
var obj2=obj1;
obj2.name="Jake";
alert(obj1.name); //"Jake"
obj2=new object();
obj2.name="Haly";
alert(obj1.name); //"Jake"
从上面的例子我们可以看出,引用类型变量的复制,实质类似于"捆绑"。如果obj1,obj2存在复制关系,一但两者中的一方被访问(增删属性等),其它变量就会自动修正自己,与之保持一致。但是要注意,一但两者中的一方重新定向(指向一个新对象),这种捆绑就会消失。