<head> <title></title> <script type="text/javascript"> function pageLoad() { var dtmNow = new Date(); var dtmDt1 = dtmNow; dtmDt1.setMinutes(20); var divContent = document.getElementById("divContent"); divContent.innerHTML = "dtmDt1:" + dtmDt1.toLocaleTimeString() + "dtmNow:" + dtmNow.toLocaleTimeString(); } </script> </head> <body onload ="pageLoad()"> <div id="divContent"> </div> </body>
页面初始化时获得当前时间给变量dtmNow,然后dtmNow变量又赋给dtmDt1,给dtmDt1的分钟设置成20,再打印出两个变量,结果发现两个变量值相等,即dtmNow也发生了变化,本意是不想dtmNow随着变化,所以才定义了dtmDt1变量,但现在dtmNow也改变了这是为什么呢?
dtmNow是Date类型,Date是对象是引用类型,dtmNow赋给了dtmDt1,引用类型间的拷贝是将变量指向同一个实例,那dtmDt1也就指向dtmNow所指向的实例,当改变其中一个的值时其实改变的是同一个实例,自然另一个变量也会随之改变,这与值类型不同。
本文转自欢醉博客园博客,原文链接http://www.cnblogs.com/zhangs1986/archive/2012/10/11/2720143.html如需转载请自行联系原作者
欢醉