2016-10-09 4 views
0

Ich brauche etwas Hilfe .. Ich muss einen neuen TypeError werfen, wenn mein finishedDate auf ein ungültiges Date-Objekt gesetzt ist, außer wenn es nicht definiert ist. Als ich es für meine dueDate habe ich geschrieben:Throw new TypeError, wenn das Datum ungültig ist Date-Objekt

Object.defineProperty(this, 'dueDate', { 
get: function() { 
    return _dueDate; 
}, 
set: function(dueDate) { 
    if (Object.prototype.toString.call(dueDate) !== "[object Date]") { 
    throw new TypeError('invalid date'); 
    } 
    _dueDate = dueDate; 
} 
}); 

Aber wenn ich versuche, dies für finishedDate zu tun, wird es nicht funktionieren, denn manchmal ist es kein finishedDate, es nicht definiert ist?

+0

ja der Code dueDate im Text wie gesagt, das ist, wie ich die dueDate bekommen haben, aber es hat nicht funktioniert für finishedDate seit finishedDate manchmal kann undefiniert sein (wenn der Artikel nicht fertig ist). das Datum sollte 2016-10-09 sein und wenn es auf etwas anderes gesetzt ist, sollte es einen TypeError werfen? Es ist also "geschützt" und kann nur auf ein gültiges Date-Objekt gesetzt werden – babyCoder

+0

Ich sehe keine Variable 'finishedDate' irgendwo in Ihrem Code. Könnten Sie Ihren Code auch richtig einrücken? –

+0

Beachten Sie, dass Ihr Test für ein "ungültiges Datum" fehlschlägt, da ein ungültiges Datum ein gültiges Date-Objekt ist, z. 'Object.prototype.toString.call (neues Datum ('foo'))! ==" [object Date] "' gibt 'false' zurück. – RobG

Antwort

1

Nur werfen den Fehler nicht, wenn finishedDateundefined ist:

set: function(finishedDate) { 
    if (finishedDate !== undefined && Object.prototype.toString.call(finishedDate) !== "[object Date]") { 
// -----^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
     throw new TypeError('invalid date'); 
    } 
    _finishedDate = finishedDate; 
} 
+0

Oh, danke !!! – babyCoder

+0

vielleicht könnten Sie mir ein bisschen mehr helfen .. Ich muss ein isDone auch machen, wo es schreibgeschützt sein sollte? Es sollte einen Wert zurückgeben, der angibt, ob die Aufgabe erledigt ist? – babyCoder

+0

@babyCoder: Okay, wo steckst du fest? Sie scheinen zu wissen, wie man Eigenschaften mit Accessoren definiert (wenn Sie wollen, dass es eine Eigenschaft mit einem Accessor ist, eher ein expliziter Funktionsaufruf). –

Verwandte Themen