miércoles, 10 de octubre de 2012

Modificacion de las propiedades de una clase en Javascript

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;  }