javascript - how to NOT assign by reference - Stack Overflow

Okay consider this bit of code:var d1 = new Date();var d2 = d1;d2.setDate(d2.getDate()+1);alert(d1 +

Okay consider this bit of code:

var d1 = new Date();
var d2 = d1;

d2.setDate(d2.getDate()+1);
alert(d1 + "\n" + d2);

Even though I call setDate() on d2, d1 is also being incremented. I understand this to be because d1 is assigned to d2 by reference. My question is...how do I NOT do this, so that .setDate() only gets applied to d2?

Okay consider this bit of code:

var d1 = new Date();
var d2 = d1;

d2.setDate(d2.getDate()+1);
alert(d1 + "\n" + d2);

Even though I call setDate() on d2, d1 is also being incremented. I understand this to be because d1 is assigned to d2 by reference. My question is...how do I NOT do this, so that .setDate() only gets applied to d2?

Share Improve this question edited Feb 3, 2012 at 2:23 david 2,5851 gold badge36 silver badges52 bronze badges asked Feb 3, 2012 at 1:40 slinkhislinkhi 9894 gold badges18 silver badges36 bronze badges 0
Add a ment  | 

3 Answers 3

Reset to default 10

In JavaScript, all objects are assigned to variables 'by reference'. You need to create a copy of the object; Date makes it easy:

var d2 = new Date(d1);

This will create a new date object copying d1's value.

You need

var d2 = new Date(d1.getTime());

See How to clone a Date object in JavaScript for more details.

Think this should work:

var d1 = new Date();
var d2 = new Date();
d2.setDate(d1.getDate());

d2.setDate(d2.getDate()+1);
alert(d1 + "\n" + d2);

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744754508a4591799.html

相关推荐

  • javascript - how to NOT assign by reference - Stack Overflow

    Okay consider this bit of code:var d1 = new Date();var d2 = d1;d2.setDate(d2.getDate()+1);alert(d1 +

    10小时前
    40

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信