javascript - 如何正确关联此对象的两个构造函数?

标签 javascript oop inheritance

我正在尝试使用 javascript 创建我自己的提醒应用程序,所以基本上我可以创建一组提醒,如类别(工作、学校、编程提醒等)。每一个都可以有他们的提醒,比如在工作类别上,我可以在那里有提醒列表等等。我还想将集合及其提醒保存在本地存储中,然后在页面上重新创建它们。当然,提醒列表应该在它所属的集合上。

在我做这个页面之前,我真的想先建立这个模型,我决定继续使用 oop 方法作为一种练习,我正在弄清楚如何将它们关联起来,这就是我到目前为止所得到的..

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

问题是它不会让我为集合创建多个提醒,我希望你能帮我解决这个问题谢谢!需要明确的是,我只学习了 3 个月的 javascript,这是我第一次做 oop,虽然我之前做过一些以前的任务项目,但我认为真正熟悉 oop 很重要。

最佳答案

您只能添加一个提醒的原因是您没有构建提醒集合。每次设置新提醒时,都会覆盖之前的提醒。

我稍微重写了您发布的代码,以使用我认为更直观的属性名称,同时也在每个 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();

关于javascript - 如何正确关联此对象的两个构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46781216/

相关文章:

swift - 协议(protocol)扩展受自身约束的泛型闭包中的错误推断类型

python - 将对象方法作为对象参数值传递

javascript - 为什么这个 javascript 根本不起作用?

javascript - 使用 jquery 执行 "onchange"的正式方法?

Javascript 将输入附加到表单

javascript - 使用 this 从嵌套函数内部获取值

Java - 循环访问类的实例,而不是为每个单独的实例调用方法

java - 在 Cactoos Joined 类上使用多个 Iterables 抛出警告

javascript - 如果未找到值,则插入数组

java - Java 中的 Haskell 类型类层次结构