El famoso trim, que casi siempre esta presente, javascript no lo tiene (o por lo menos todavía). Vamos a usar ese tan necesario metodo para ver un poco como podemos extender nuestro javascript; pero es importante no utilizar una libreria, por ej: jQuery tiene $.trim() lo cual es muy útil, pero la idea no es referenciar una libreria por un método.

Function.prototype.nuevoMetodo = function(nombre, funcion) {
    if (!this.prototype[nombre]) {
        this.prototype[nombre] = funcion;
        return this;
    }
}

String.nuevoMetodo('trim', function(){
    return this.replace(/^\s+|\s+$/g, '');
});

var trimeado = '    hola'.trim();
console.log(trimeado); // 'hola'

Primero extendemos el objeto Function de javascript mediante prototype con una funcion nuestra que llamé nuevoMetodo, la cual recibe un nombre y una funcion. Lo primero que hacemos es comprobar que no lo tenga, como vimos en este post podemos acceder a propiedades de un objeto en forma de array, y ya que el valor undefined es falso podemos hacer la condición: Si no existe, lo agregamos. De esta manera estamos prototipando Function con una función generica para agregar métodos y extender nuestro javascript.

Ahora simplemente llamamos a nuevoMetodo desde String (ahora lo posee por herencia) y le agregamos la función trim, que basicamente es un regular expression que remueve los espacios.

Es una forma segura y limpia de extender nuestro javascript para casos especificos sin tener que hacernos una funcion colgada de una palmera.

Fuente: JavaScript: The Good Parts – Douglas Crockford