#javascript #boolean
#javascript #логическое
Вопрос:
Мне нужно создать isDone для моего списка задач, и он должен возвращать true или false, если это сделано или нет. Но если установлена дата isDone, она должна выдавать ошибку, поскольку она должна быть «доступна только для чтения». Я думал о чем-то вроде:
function ToDoItem(isDone) {
let _isDone;
Object.defineProperty(this, 'isDone', {
get: function() {
return _isDone;
}
});
}
Но как мне продолжить, чтобы возвращаемое значение было true или false?
В моем finishedDate я сделал это:
Object.defineProperty(this, 'finishedDate', {
get: function() {
return _finishedDate;
},
set: function(finishedDate) {
if (finishedDate !== undefined amp;amp; Object.prototype.toString.call(finishedDate) !== '[object Date]') {
throw new TypeError('invalid date');
}
_finishedDate = finishedDate;
}
});
Комментарии:
1. Как вы определяете, выполнено это или нет?
2. @MadaraUchiha Я внес правку, в которой также ввел свой код для finishedDate
Ответ №1:
Это не функциональная функция для того, что вы хотите, не так ли? Я бы предположил что-то простое, например, следующую философию
function isDone(item) {
return todoList.getItem(item).status;
}
Комментарии:
1.Я думаю, мне нужно использовать что-то вроде
function compareTime(time1, time2) {
return new Date(time1) > new Date(time2);
}
. Потому что здесь он вернет true, если time1 позже time2? Но как мне изменить это, чтобы я мог использовать геттеры?2. Что бы я сделал, так это иметь ToDoList «class», чтобы я мог сначала инициализировать. Затем для каждого элемента должна быть некоторая стандартная конфигурация, такая как статус, время и т. Д. Итак, если у вас есть это в каждом объекте, получая элемент, у вас есть вся информация, которую вы хотите, просто проверьте время, статус или что-то еще, что вы хотите.
3.Хорошо, если я использую
Object.defineProperty(this, 'isDone', {
get: function(dueDate, finishedDate) {
return new Date(dueDate) > new Date(finishedDate);
}
});
. Он проверяет нормально при возврате false, но не то, что он должен возвращать true, почему это так?