Создание списка задач, функция isDone

#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, почему это так?