JS patterns

patterns in javascript

by bhupendra negi

JavaScript

/********* module patten ***************/
var obj = obj || {};
obj.methods = (function () {
    return {
        fun1: function (str) {
            alert("this is fun 1 " + str);
        },
        fun2: function (str) {
            alert("this is fun 2 " + str);
        }
    }

})();

// call to module pattern
/*
obj.methods.fun1("called");
obj.methods.fun2("called");
*/
/******* revealing pattern   ***********/
// high level of abstraction for a group of related functions

obj.methods1 = (function () {

    var username = "empty";

    function login(str) {
        console.log("you are logegd in with user " + str);
        username = str;
    }

    function logout(str) {
        console.log("you are logged out");
        username = null;
    }

    function getUser() {
        console.log("the logged in user is " + username);
        return username;
    }
    
    //expose function api to object

    return {
        login: login,
        logout: logout,
        getuser: getUser,
        uname: username,
    }

})();

//call to revealing pattern
/*
obj.methods1.login("don");
console.log(obj);
console.log(obj.methods1.getuser());
console.log(obj.methods1.uname);
*/

//*********** Import mixing model **********************************//

// value passed in IIFE
function EventService()
{
this.addEvent = function(evService){ console.log("You added an event :"+evService);}
}

var es = new  EventService();


obj.methods2 = (function (eService) {

    var username = "empty";

    function login(str) {
        console.log("you are logegd in with user " + str);
        username = str;
        eService.addEvent("fireEvent");
    }

    function logout(str) {
        console.log("you are logged out");
        username = null;
    }

    function getUser() {
        console.log("the logged in user is " + username);
        return username;
    }
    
    //expose function api to object

    return {
        login: login,
        logout: logout,
        getuser:...