Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-setDate覆盖预先分配的变量的值_Javascript_Date_Web_Web Frontend - Fatal编程技术网

JavaScript-setDate覆盖预先分配的变量的值

JavaScript-setDate覆盖预先分配的变量的值,javascript,date,web,web-frontend,Javascript,Date,Web,Web Frontend,我试图为不同的task()对象分配不同的日期;但javascript在本例中的行为出人意料,从下面代码段的附加输出中可以看出 在指定日期(即预期输出)时,它会返回预期值(与指定的值相同),但在查看日期(即实际输出)时,它会以某种方式覆盖所有日期变量的值,并仅返回所有日期变量的最后指定值 请帮助我了解这是怎么发生的 var task=function(){ this.name、this.date、this.id; this.saveTask=函数(n,d) { this.name=n; 这个日

我试图为不同的task()对象分配不同的日期;但javascript在本例中的行为出人意料,从下面代码段的附加输出中可以看出

在指定日期(即预期输出)时,它会返回预期值(与指定的值相同),但在查看日期(即实际输出)时,它会以某种方式覆盖所有日期变量的值,并仅返回所有日期变量的最后指定值

请帮助我了解这是怎么发生的


var task=function(){
this.name、this.date、this.id;
this.saveTask=函数(n,d)
{
this.name=n;
这个日期=d;
};
this.gettask=函数()
{
返回this.id+“:”+this.date;
};
}
var d=新日期();
var-obj=[];
console.log(“预期输出”);

对于(i=0;i您正在为每个
任务
分配相同的日期对象。为循环中的每个任务创建一个新日期

for (let i = 0; i < 5; i++) {
    let d = new Date();
    d.setDate(i);

    let t = new task();
    t.date = d;
    // etc

    obj.push(t);
}
for(设i=0;i<5;i++){
设d=新日期();
d、 设定日期(i);
设t=新任务();
t、 日期=d;
//等
目标推力(t);
}
我建议你读一读~



请注意,由于执行时间的不同,每个日期对象的时间部分可能会有所不同。如果您希望它们都具有相同的时间但日期不同,则需要稍微更改。

同意!但是,我每次都将不同的日期分配给
任务。日期
不,您没有。
var d=new date();
为d指定一个日期。
obj[i].date=d
为日期指定一个引用,它不会复制它;-)谢谢,我知道这个解决方案,但我不明白为什么会发生这种情况;即使我为每个对象指定了不同的日期,但它显示相同的值。@Sachink它们没有区别,它们是完全相同的
Date
实例,通过引用指定。明白了!通过引用指定的日期对象。我以为它是在给变量赋值时复制的。