标签:
1.对象和函数都是引用关系。
var a = 5; var b = a;//这个是一种赋值的关系,b改变不会影响到a。因为a,b都是变量
b += 3;
alert(b); //8
alert(a); //5
var a = [1,2,3];
var b = a;//a,b都是个对象。不是赋值的关系了,是一种引用。
b.push(4);
alert(b); //1,2,3,4
alert(a); //1,2,3,4
此时a和b 共用一个地址,b对象的元素发生改变,a也会改变。
但是下面的例子,由于var b=[],这个操作,b又重新有了新的地址。
var a = [1,2,3];
var b = a;
b = [1,2,3,4];
alert(b); //1,2,3,4
alert(a); //1,2,3
2.复制的时候,不想改变原来的值
错误的例子:这个obj的a值发生了变化。
var obj = {
a : 10
};
var obj2 = obj;
obj2.a = 20;
alert(obj.a); //20
正确的方法:浅拷贝
标签:
原文地址:http://www.cnblogs.com/GumpYan/p/5699456.html