JS将一个对象赋值给另外一个变量,是地址传值吗?

everygoog 2014-10-04 08:21:26
<script>
function Person(){}
var p1 = new Person();
p1.age = 25;
var p2 = p1;
p2.age = 51;
document.write(p1.age); //51,证明是地址传值
p2 = null;
document.write(p1.age); //51,why?
</script>



按照第一个输出,证明是地址传值,两个变量同时指向内存的同一块地址?但是我将p2置为null,为什么p1.age还是为51?
...全文
2949 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
没有但是lg 2015-05-14
  • 打赏
  • 举报
回复
引用 4 楼 KK3K2005 的回复:
var p1 = new Person(); 这个表达式做了什么? 首先 new xxx() 就是在内存中创建了一个 object var p1 = xxx 那个 现在 p1 这个变量保存了 这个object的地址 到这里开始 访问 p1 就是访问这个object p1.age = 25; 这个 就是 object.age = 25 var p2 = p1; //这个吧p1 的值 赋予 p2 (因为p1 是指向一个对象的变量 所以 p2 现在 也指向 这个变量) p2.age = 51; 这个就是 object。age = 51 //一直到这里位置 现在内存有一个对象 object(new Person()创建的) 2个变量 p1 p2 (都指向 那个 object) p2 = null; /这里 p2 指向了null 但是p1 还是指向那个 object 所有 后面就。。。。
分析的太好了!
程序员鼓励师 2014-10-06
  • 打赏
  • 举报
回复
我来学习一下
KK3K2005 2014-10-04
  • 打赏
  • 举报
回复
var p1 = new Person(); 这个表达式做了什么? 首先 new xxx() 就是在内存中创建了一个 object var p1 = xxx 那个 现在 p1 这个变量保存了 这个object的地址 到这里开始 访问 p1 就是访问这个object p1.age = 25; 这个 就是 object.age = 25 var p2 = p1; //这个吧p1 的值 赋予 p2 (因为p1 是指向一个对象的变量 所以 p2 现在 也指向 这个变量) p2.age = 51; 这个就是 object。age = 51 //一直到这里位置 现在内存有一个对象 object(new Person()创建的) 2个变量 p1 p2 (都指向 那个 object) p2 = null; /这里 p2 指向了null 但是p1 还是指向那个 object 所有 后面就。。。。
keatkeat1987 2014-10-04
  • 打赏
  • 举报
回复 1
对象是指针,引用类型 = null 是断开指针的意思
码无边 2014-10-04
  • 打赏
  • 举报
回复
p1和p2是指向不同内存地址,p1 = null,p2值是不变
问天玄铁 2014-10-04
  • 打赏
  • 举报
回复
你把person设为null,这才是p1和p2指向的原型。我才看书,不对之处,还请斧正。

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧