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
?
3 Answers
Reset to default 10In 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
评论列表(0条)