为什么这些物品都有相同的日期
Why do these objects all have the same date?
我似乎不明白为什么所有的foo。日期是相同的值。我希望每一次迭代都能增加一天。
如果有人能解释一下原因和一个可能的解决方案,那就太好了:)
谢谢。
Date.prototype.nextDay=function()
{
this.setDate(this.getDate()+1);
return this;
}
aDate = new Date(0);
function foo()
{
this.date = aDate.nextDay();
}
ary = new Array();
for (i=1;i<5;i++){
ary.push(new foo());
}
console.log(JSON.stringify(ary, null, 4));
Foo对象:
[
{
"date": "1970-01-05T00:00:00.000Z"
},
{
"date": "1970-01-05T00:00:00.000Z"
},
{
"date": "1970-01-05T00:00:00.000Z"
},
{
"date": "1970-01-05T00:00:00.000Z"
}
]
因为在foo函数中引用了aDate,而this.date = aDate.nextDay()
没有克隆它。它只是创建对同一对象的新引用。
所以你在所有foo实例中使用相同的date (adate)实例。
您不需要更改Date的原型或使用new,如果您想要自1970年1月1日起的增量,则此函数将工作:-
var nextDate = (function() {
var days = 0;
return function() {
var date = new Date(0);
date.setDate(date.getDate() + ++days);
return date;
}
})();
nextDate ();//1970年1月2日星期五01:00:00 GMT+0100 (W.欧洲标准时间)
nextDate ();//1970年1月3日星期六01:00:00 GMT+0100 (W.欧洲标准时间)
如果您想要第一次调用nextDate给出1月1日,那么将++天更改为days++
相关文章:
- 为什么要做新的.Date()与new相差1小时.日期().到ISOString()
- 为什么在JavaScript中可以从另一个日期对象中减去日期对象
- 日期没有打印出来:为什么会这样
- 为什么javascript中的日期操作很奇怪
- 为什么将新日期设置为今天会返回昨天
- 为什么引导 UI 在加载时不显示正确的日期格式
- 为什么不使用日期选择器代码
- 为什么我的Date对象返回当前日期
- 为什么获胜't我的javascript代码显示一个在当前日期出生的名人的名字
- 为什么萤火虫不打破日期
- 为什么我在 X 轴上得到相同的日期
- 为什么 MVC4 验证 js 自动将数字验证添加到日期时间
- 为什么在IE8中禁用日期不能正确使用Jquery日期选择器
- 为什么日期对象的时间没有改变?我怎样才能改变它
- 为什么我的AngularJS ngModel绑定到时间输入,而不绑定到日期输入
- 为什么我从时间戳中得到错误的日期
- 为什么我的约会是无效日期
- 这个javascript日期解析有什么问题?为什么 js 讨厌数字 8
- javascript 日期 为什么日期新日期(“2011-12-13”)被视为星期一而不是星期二
- JavaScript日期:为什么这两个日期不同