//给Date添加一个新的方法 (日期加一天)
Date.prototype.addDays=function(d){
this.setDate(this.getDate() + d);
}
//给Date添加一个新的方法 (日期加一年)
Date.prototype.addYears = function(y) {
var m = this.getMonth();
this.setFullYear(this.getFullYear() + y);
if (m < this.getMonth()) {
this.setDate(0);
}
};
var data=[];
var year=Math.ceil(1.2);
var nowDate=new Date();
var lastDate=new Date();
lastDate.addYears(1);
while(nowDate<lastDate){
console.log(nowDate);
data.push(nowDate);
nowDate.addDays(1);
}
console.log(data);
这是打印的值
只是data数组的打印值
最后在网上找到的答案是 data.push(nowDate)改成data.push(new Date(nowDate));
这是为什么啊,求大神解惑
data是一个数组,在data中,存放的是同一个对象:nowDate。
简单理解,就是你先在北京故宫买了一栋房子((~ o ~)~zZ 不要在意买不买得到。。。),
进入北京故宫的有10条街道,每条街道都有一个牌子,写着你买的房子的门牌号,这样,
别人找你就通过街道前的门牌号去找。
突然有一天,你把房子卖了,去国外买别墅了,可惜没通知别人,别人通过门牌号,找到的是
新的房主了,不是你了。
同样,data就是一个容器,下标就是街道口的指示,现在你把data所有的下标,就指向了nowDate,
最后又把nowDate换成了2017年,这样通过data去找到的nowDate,肯定都是最后一位主人了。
为什么把data.push(nowDate)改成data.push(new Date(nowDate))就行呢,因为这样做,就不是在街道口写下你的门牌号,而是把你当时房子的资料,放在指示牌上,别人找你,找到的是写指示牌时,你住的房子。