2016-10-09 11 views
0

私はいくつかの助けが必要です。未定義の場合を除いて、finishedDateが無効なDateオブジェクトに設定されている場合、新しいTypeErrorをスローする必要があります。Dateが無効なときに新しいTypeErrorをスローするDateオブジェクト

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; 
} 
}); 

をしかし、私は時々何finishedDateがないので、それは動作しませんfinishedDateのためにこれを行うにしようとすると、それは未定義です:?私は私が書いた私のdueDateのためにそれをやった finishedDateundefinedある場合

+0

をはいコードがdueDateである私はdueDateを得るためにやった方法ですが、それはfinishedDate以来finishedDateのために動作しませんでしたテキストに言ったように場合によっては未定義になることもあります(項目が終了していない場合)。 日付は2016-10-09でなければなりません。それが何かに設定されていれば、TypeErrorがスローされますか?したがって、それは "protected"で、有効なDateオブジェクトにのみ設定することができます – babyCoder

+0

コードのどこにでも変数 'finishedDate'が表示されません。また、コードを適切にインデントしてください。 –

+0

無効な日付が有効なDateオブジェクトであるため、「無効な日付」のテストが失敗することに注意してください。 'Object.prototype.toString.call(new Date( 'foo'))!==" [object Date] "'は 'false'を返します。 – RobG

答えて

1

ただ、エラーをスローしません:

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

ああ、ありがとう! – babyCoder

+0

多分あなたはもう少し私を助けることができます..私はisDoneも読み取り専用にする必要がありますか? タスクが完了したかどうかを示す値を返す必要がありますか? – babyCoder

+0

@babyCoder:さて、あなたはどこにいるのですか?あなたはアクセサを使ってプロパティを定義する方法を知っているようです(明示的な関数呼び出しではなく、アクセサでプロパティにしたい場合)。 @crowder –

関連する問題