日期:2014-05-16  浏览次数:20408 次

js怎样将2个变量指向内存同一位置?

js怎样将2个变量指向内存同一位置?


------解决方案--------------------
js实现不了的,不像c语言那样有二级指针;
在js里 ,引用指向的是具体的对象,而不是另一个引用。就是说被引用的对象本身不是引用。例如a引用b,但是如果b的值发生了变化,则a就不指向b了,因为b变成了另外一个具体的对象,而不是一个引用地址。

如 var b = new Object();
var a = b;
b = new Array();
alert( a == b ); //返回的是false;说明它们指向的具体对象不同了。
再结合代码解析下哈:(如果 不了解 “栈 堆”的概念可百度下 )
new Object() 在堆上开辟一段空间,然后将该对象的首地址返回给 b;
a = b;此时 a 也保存了 刚才new的对象的首地址;
b = new Array(); 那么会再在堆上开辟一段空间,然后此时创建的对象的首地址返回给b;这时 a依然保存的是 new Object()创建的对象的地址;
所以a 、b 保存的是不同对象的首地址,虽然js 里没这些概念,但是底层原理 却是是这样的;