2017-10-17 57 views
5

मैं जावास्क्रिप्ट के साथ अपना खुद का अनुस्मारक ऐप बनाने की कोशिश कर रहा हूं, इसलिए मूल रूप से मैं एक श्रेणी (काम, स्कूल, प्रोग्रामिंग अनुस्मारक इत्यादि) जैसे अनुस्मारक का एक सेट बना सकता हूं। और इनमें से प्रत्येक को उनके अनुस्मारक कार्य श्रेणी की तरह हो सकते हैं, मेरे पास अनुस्मारक की सूची हो सकती है और इसी तरह। मैं स्थानीय स्टोरेज पर सेट और उनकी अनुस्मारक को भी सहेजना चाहता हूं और उन्हें पृष्ठ पर फिर से बनाना चाहता हूं। निस्संदेह अनुस्मारक की सूची उस सेट पर होनी चाहिए जो संबंधित है।इस ऑब्जेक्ट को दो कन्स्ट्रक्टर को सही ढंग से कैसे संबद्ध करें?

इससे पहले कि मैं पेज कर मैं सच में यह पहली मॉडल बनाना चाहते हैं और मैं एक अभ्यास के रूप में 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 महीने के लिए जावास्क्रिप्ट सीख रहा हूं और यह मेरी पहली बार ओओपी कर रहा है हालांकि मैंने पहले कुछ पिछली कार्य परियोजनाएं की थीं लेकिन मुझे लगता है कि वास्तव में ओओपी से परिचित होना महत्वपूर्ण है।

उत्तर

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

संबंधित मुद्दे