Javascript esta basado en prototipos, todos los objetos son instancias y hereda las propiedades mediante el seguimiento de la cadena de prototipos.
La función constructora o prototipo puede especificar un conjunto inicial de propiedaes, añadieno o removiendo dinamicamente a objetos individuales o a un conjunto entero de objetos.
Como ejemplo, mostramos la modificación del prototipo para la clase String:
// Elimina los espacios iniciales de una cadena
String.prototype.LTrim = function()
{ return this.replace(/\s*((\S+\s*)*)/, "$1"); } // Elimina los espacios finales de una cadena String.prototype.RTrim = function() { return this.replace(/((\s*\S+)*)\s*/, "$1"); } // Elimina los espacios iniciales y finales de una cadena String.prototype.Trim = function() { return this.LTrim(this.RTrim()); } // Convierte el primer carácter de cada cadena en mayúsculas String.prototype.Capitalize = function() { return this.replace(/\w+/g, function(a) { return a.charAt(0).toUpperCase() + a.slice(1).toLowerCase(); }); }; // Descodifica una cadena en URL String.prototype.UrlDecode = function() { var str = this.replace(new RegExp('\\+','g'),' '); return unescape(str); }; // Códifica una cadena en URL String.prototype.UrlEncode = function() { var str = escape(this); str = str.replace(new RegExp('\\+','g'),'%2B'); return str.replace(new RegExp('%20','g'),'+'); }; //Convierte una cadena a entero despúes de eliminar sus espacios iniciales y finales String.prototype.ToInteger = function() { var str = parseInt(this.Trim()); return str; }; // Formatea un número poniendole 0 delante y lo devuelve en string String.prototype.FormatNum = function(Length) { var Num = "" + this; var Diff = parseInt(Length) - parseInt(Num.length); var Numero = parseInt(Num); var NumberStr = "" + Num + ""; if (Diff > 0) { for (var i=0; i < Diff; i++) { NumberStr = "0" + NumberStr; } } return NumberStr; } // Formatea un alfanumérico poniendole espacios detrás y lo devuelve en string String.prototype.FormatAlf = function(Length) { var Txt = "" + this; var Diff = parseInt(Length) - parseInt(Txt.length); var Str = Txt; if (Diff > 0) { for (var i = 0; i < Diff; i++) { Str += " "; } } return Str; } // Formatea un alfanumérico poniendole guiones bajos detrás y lo devuelve en string String.prototype.FormatAlfUnderline = function(Length) { var Txt = "" + this; var Diff = parseInt(Length) - parseInt(Txt.length); var Str = Txt; if (Diff > 0) { for (var i = 0; i < Diff; i++) { Str += "_"; } } return Str; } // Sustituye las comillas simples por dos comillas dobles String.prototype.Escape = function() { var Txt = fReplace(this, "'", "''"); return Txt.Trim(); } // Añade barras para escapar caracteres especiales String.prototype.AddSlashes = function() { var str = this.replace(/\\/g,'\\\\'); str = str.replace(/\'/g,'\\\''); str = str.replace(/\"/g,'\\"'); str = str.replace(/\0/g,'\\0'); return str; } // Quita las barras para escapar caracteres especiales String.prototype.StripSlashes = function() { var str = this.replace(/\\'/g,'\''); str = str.replace(/\\"/g,'"'); str = str.replace(/\\0/g,'\0'); str = str.replace(/\\\\/g,'\\'); return str; } //Comprime en JAVASCRIPT String.prototype.Compress = function() { var q = {}, ret = ""; this.replace(/([^=&]+)=([^&]*)/g, function(m, key, value) { q[key] = (q[key] ? q[key] + "," : "") + value; }); for ( var key in q ) ret = (ret ? ret + "&" : "") + key + "=" + q[key]; return ret; }