2017-10-17 44 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}`) 
 
}

相關問題