JS将一个对象赋值给除此而外一个变量,是地址传值吗

JS将一个对象赋值给另外一个变量,是地址传值吗?
 <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?
------解决思路----------------------
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

所有 后面就。。。。