Prepending to an object module

by peterbenoit

JavaScript

var foo = (function (ref) {
    ref.prependedMethod = function () {
        console.log('prepended method called');
    }
    
    ref.Bar = function(){
        return {
            prependedPublicMethod: function(){
                console.log("prepended public foo.Bar public method");
            }
        }
    };
    
    return ref;
}(foo || {}));

console.log(foo);
console.log(foo.Bar);

foo.Bar = foo.Bar || (function (ref) {

    var privateMethod = function () {
        console.log('private method called');
    }

    return {
        publicMethod: function () {
            console.log('public method called');
        }
    }
}(foo || {}));

//console.log(foo.Bar);


//console.log("-----------------------------");

foo.Bar.publicMethod();
foo.prependedMethod();
try {
//    foo.Bar.privateMethod();
} catch (err) {
    console.log("can't call private method");
}