0

i need explanation about object or date in javascript. Because i made some variable with value an object(date), but after i change the a new variable, all variables and the object is being change. I don't know why this happen.

Here is the code

var expDate = new Date(Date.now());
var minExpDate = expDate;
var maxExpDate = expDate;

minExpDate.setDate(minExpDate.getDate() + 30);
maxExpDate.setDate(maxExpDate.getDate() + parseInt(chf.Get('ExtraDays')));

alert(expDate + '\n' + minExpDate + '\n' + maxExpDate);

but it's okay if i make a new object

var expDate = new Date(Date.now());
var minExpDate = new Date(expDate);
var maxExpDate = new Date(expDate);

minExpDate.setDate(minExpDate.getDate() + 30);
maxExpDate.setDate(maxExpDate.getDate() + parseInt(chf.Get('ExtraDays')));

alert(expDate + '\n' + minExpDate + '\n' + maxExpDate);

Sorry for my english and the title is too weird. And i hope to get some explanation why this happen.

Thank you,

Code21K
  • 74
  • 2

1 Answers1

0

when you use minExpDate = expDate, you are passing a reference, so now minExpDate holds a pointer to expDate.

if you want them to be separate, you need to create a new object:

var expDate = new Date();
var minExpDate = new Date();
var maxExpDate = new Date();
WalksAway
  • 2,769
  • 2
  • 20
  • 42