2017-10-17 43 views
5

我试图用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。

回答

0

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

我已经重写了您发布的一些代码,以便使用我认为更直观的属性名称,还可以在每个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();

+0

我真的很高兴,为它命名很容易理解谢谢! –

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

您可以设置一个数组的class属性,并使用一个对象,其中属性名称是提醒名称和值可以是任何类型

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

相关问题