Вариант без повтора "return this"
function $(a) { this[a] = a; }
// методы хранятся тут
var props = {
"foo": function(){ alert("foo"); },
// что-то возвращает
"bar": function(){ alert("bar"); return ":)"; },
"etc": function(a){ alert("etc"); return this[a]; }
};
// магическая оборачивалка
var i, wrap = function(prop) {
return function(){
var res = props[prop].apply(this, arguments);
return res === undefined ? this:res;
};
};
// обрабатываем свойства магической оборачивалкой
for(i in props) if(props.hasOwnProperty(i)) {
$.prototype[i] = wrap(i);
}
// и используем.
alert( new $().foo().bar() );
alert( new $("HEYA!").etc("HEYA!") );