можно написать с прототипами:
(function(window){
var lib = function( params ){
return lib.fn.init( params );
}
lib.fn = lib.prototype = {
constructor: lib,
init: function( params ) {
this.a = params || lib.a || this.a;
return this;
},
a: 1 // значение по умолчанию.
}
lib.fn.init.prototype = lib.fn;
lib.fn.show = function() {
alert( this.a );
return this;
}
window.blahblah = lib;
})(window);
blahblah().show(); // отображаем значение по умолчанию у нас стоит 1
blahblah.a = 10; // меняем значение по умолчанию на 10
blahblah().show(); // отображаем значение по умолчанию.
blahblah( 234 ).show(); // отображем значение 234
blahblah().show(); // значение по умолчанию не изменилось так же 10.