Comment faire chainable fonction en JavaScript?

Permet d'imaginer la fonction comme ceci:

function foo(x) {
    x += '+';
    return x;
}

L'utilisation de ce serait comme:

var x, y;
x = 'Notepad';
y = foo(x);
console.log(y); //Prints 'Notepad+'.

Je suis à la recherche d'un moyen de créer une fonction qui est chainable avec d'autres fonctions.

Imaginer utilisation:

var x, y;
x = 'Notepad';
y = x.foo().foo().toUpperCase(); //Prints 'NOTEPAD++'.
console.log(y);

Comment puis-je faire?

OriginalL'auteur daGrevis | 2011-10-11