面向对象不得不多二三事(2):对象引用是什么和他的问题
2018-11-07 本文已影响0人
Lynne_2ca7
我们先来看一个例子
var a = [1,2,3];
var b = a;
b.push(4);
alert(b); //[1,2,3,4]
alert(a); // [1,2,3,4]
由以上例子我们可知:对象类型 赋值 不仅是值得复制,而且也是引用的传递
例2:
var a = [1,2,3];
var b = a;
b = [1,2,3];
alert(b); //[1,2,3,4]
alert(a); // [1,2,3]
给b赋值完成后又进行了单独的赋值,内存此时会单独给b开辟一个存储空间。a则保持不变。因此会出现上述的输出
2、对象的引用和比较
var a = 5;
var b = 5;
alert( a == 5 ); //true 基本类型相比 : 值相同即可
var a = [1,2,3];
var b = [1,2,3]
alert( a == b ) //false 对象类型相比: 值和引用都得相同
var a = [1,2,3];
var b = a;
alert( a == b ) //true
由上,同理可得
var p1 = new createPreson('小明');
p1.showName();
var p2 = new createPreson('小强');
p2.showName();
console.log( p1.showName == p2.showName ); //false