How to properly connect these objects with two constructors?

I am trying to create my own reminder application with javascript, so basically I can create a set of reminders, such as a category (work, school, programming reminders, etc.). And each of them can have its own reminders, for example, by category of work, I have a list of reminders, etc. I also want to save the sets and their reminders on localstorage and recreate them again on the page. Of course, the list of reminders should be on the set that it belongs to.

Before I make the page, I really want to model this first one, and I decided to go for the oop approach as a practice, and I figure out how to link them here, which I got so far.

    var ReminderSet = function(set){
      this.set = set; //could be work, school , etc 

    }


    var Reminders = function(new_reminder){
      this.reminders = new_reminder; // a new reminder
    }

    ReminderSet.prototype.reminders = new Reminders();

    ReminderSet.prototype.printSet = function(){
      console.log(this.set, this.reminders); /* gives the ff output 
work { reminders: 'finish task on time' }
school { reminders: 'study on chem' }*/
    }

    var workReminders = new ReminderSet("work"); // create a new set of reminder
    var schoolReminders = new ReminderSet("school"); // create a new set of reminder

    workReminders.reminders = new Reminders("please the boss"); //add a new reminder to work
    workReminders.reminders = new Reminders("finish task on time");//add a new reminder to work
    schoolReminders.reminders = new Reminders("finish projects"); //add new reminder to school
    schoolReminders.reminders = new Reminders("study on chem"); //add new reminder to school

    workReminders.printSet(); 
    schoolReminders.printSet();

, , , ! , javascript 3 , , oop, , , oop.

+6
3

, , , . , , .

, , , , , , ReminderSet.

var ReminderSet = function (name) {
  this.name = name;
  this.reminders = [];
}

ReminderSet.prototype.add = function (reminder) {
  this.reminders.push(reminder);
  return this;
}

ReminderSet.prototype.list = function() {
  console.log(this.reminders);
}

var Reminder = function (description) {
  this.description = description;
}


var work = new ReminderSet('work')
  .add(new Reminder('Get to work on time!'))
  .add(new Reminder('Finish all my work!'));

var school = new ReminderSet('school')
  .add(new Reminder('Finish my coursework'))
  .add(new Reminder('Study for my exams!'));

work.list();
school.list();
Hide result
0

, , , .

   function ReminderSet(set){
      this.set = set; //could be work, school , etc 

    }


    function Reminders(new_reminder){
      this.reminders = new_reminder; // a new reminder
    }

    ReminderSet.prototype.reminders = new Reminders();

    ReminderSet.prototype.printSet = function(){
      console.log(this.set, this.reminders); /* gives the ff output 
work { reminders: 'finish task on time' }
school { reminders: 'study on chem' }*/
    }

    var workReminders = new ReminderSet("work"); // create a new set of reminder
    var schoolReminders = new ReminderSet("school"); // create a new set of reminder

    workReminders.reminders = new Reminders("please the boss"); //add a new reminder to work
    workReminders.reminders = new Reminders("finish task on time");//add a new reminder to work
    schoolReminders.reminders = new Reminders("finish projects"); //add new reminder to school
    schoolReminders.reminders = new Reminders("study on chem"); //add new reminder to school

    workReminders.printSet(); 
    schoolReminders.printSet();
0

You can set the array as a property classand use an object where the property name is the name of the reminder, and the value can be of any type

class Reminders {
  constructor() {
    this.reminders = [];
  }
  setReminder(key, prop) {
    const reminder = {
      type: key,
      value: prop
    };
    this.reminders.push(reminder);
    return this;
  }
  getReminder(key) {
    return this.reminders.filter(({type}) => type === key)
  }
}

let reminders = new Reminders()

reminders.setReminder("work", ["a", "b"]);

let work = reminders.getReminder("work");

reminders.setReminder("school", "study")

let school = reminders.getReminder("school");

reminders.setReminder("do stuff", "stuff")

let stuff = reminders.getReminder("do stuff");

for (let [{type, value}] of Object.values([work, school, stuff])) {
  console.log(`reminder type:${type}, reminder value:${value}`)
}
Run codeHide result
0
source

All Articles