Ich versuche, verschiedene Termine zu separaten task() - Objekte zuzuweisen; aber JavaScript verhält sich in diesem Fall unerwartet, wie aus der angehängten Ausgabe für das folgende Snippet ersichtlich ist.JavaScript - setDate überschreibt den Wert der zuvor zugewiesenen Variablen
Beim Zuweisen von Daten (dh Erwartete Ausgabe) gibt es beabsichtigte Werte zurück (dieselben, die zugewiesen werden), aber beim Anzeigen (dh Tatsächliche Ausgabe) überschreibt es den Wert für alle Datumsvariablen und gibt nur den letzten zugewiesenen Wert zurück alle von ihnen.
Bitte helfen Sie mir zu verstehen, wie das passiert!
var task = function() {
this.name, this.date,this.id;
this.saveTask = function(n,d)
{
this.name = n;
this.date = d;
};
this.gettask = function()
{
\t return this.id+": "+this.date;
};
}
var d = new Date();
var obj = [];
console.log("Expected Output");
for(i=0;i<5;i++){
\t obj[i] = new task();
obj[i].id = i;
d.setDate(i);
obj[i].date = d;
console.log(i+": "+d); //Display assinged value
}
console.log("Actual Output");
for(i=0;i<5;i++){
\t console.log(obj[i].gettask());
}
OUTPUT IN KONSOLE
Expected Output
0: Sat Apr 30 2016 10:42:20 GMT+0530 (India Standard Time)
1: Fri Apr 01 2016 10:42:20 GMT+0530 (India Standard Time)
2: Sat Apr 02 2016 10:42:20 GMT+0530 (India Standard Time)
3: Sun Apr 03 2016 10:42:20 GMT+0530 (India Standard Time)
4: Mon Apr 04 2016 10:42:20 GMT+0530 (India Standard Time)
Actual Output
0: Mon Apr 04 2016 10:42:20 GMT+0530 (India Standard Time)
1: Mon Apr 04 2016 10:42:20 GMT+0530 (India Standard Time)
2: Mon Apr 04 2016 10:42:20 GMT+0530 (India Standard Time)
3: Mon Apr 04 2016 10:42:20 GMT+0530 (India Standard Time)
4: Mon Apr 04 2016 10:42:20 GMT+0530 (India Standard Time)
Zustimmen! aber ich gebe das diffrent date jedes mal dem 'task.date' zu. – Sachink
Nein, bist du nicht. 'var d = new Datum();' weist * d * ein Datum zu. 'obj [i] .date = d 'weist dem Datum eine ** Referenz ** zu, es wird nicht kopiert. ;-) – RobG
Danke! Ich hab es geschafft! – Sachink