Module Pattern Practice

by Steven Senkus

JavaScript

var noteModule = (function () {
    var notes = [];
    var users = [];
    var pkey = 0;
    return {
        addUser: function (info) {
            var newUser = {
                key: ++pkey,
                data: info
            }
            users.push(newUser);
        },
        addNote: function (note) {
            var newNote = {
                data: note
            }
            notes.push(newNote);
        },

        countNotes: function () {
            return notes.length;
        },
        countUsers: function () {
            return users.length;
        },
        readNote: function (index) {
            return notes[index];
        },
        readNotes: function () {
            return notes;
        },
        readUsers: function () {
            return users;
        },
        removeNote: function (note) {
            var index = notes.indexOf(note.pkey);
            notes.splice(index, 1);
            return ''
        }



    }

})();

noteModule.addUser({
    name: 'Steve',
    desc: 'Javascript Developer',
});
noteModule.addUser({
    name: 'Bill',
    desc: 'Ruby Developer'
});

var logNm = function(method) {
    console.log(noteModule[method]());
}

logNm('readUsers');

noteModule.addNote('1st Note!  Woohoo!');
noteModule.addNote('2nd Note!  Meh.');
noteModule.addNote('3rd Note!  Whatever.');
noteModule.readNote(0);
logNm('readNotes');
logNm('countNotes');
logNm('countUsers');