Monkey Patch em Javascript

Monkey Patch é uma técnica de programação bem conhecida para modificar código runtime em linguagens dinâmicas (Smalltalk, JavaScript, Objective-C, Ruby, Perl, Python, Groovy, etc.) sem alterar o código fonte original. Programadores Ruby estão bem acostumados a criar novos métodos para classes já existentes. O Rails faz isso em várias classes do Ruby, por exemplo, adicionar o método to_xml à classe Hash. A maneira de fazer isso em ruby é:

  class String
    def meu_novo_metodo
       return self + "-> alterada"
    end
  end
  # "essa string".meu_novo_metodo retorna "essa string-> alterada"


Em Javascript, é possível adicionar um método a um protótipo (em Javascript não existe o conceito de classes como na maioria das linguagens orientadas a objetos). O código para adicionar um novo método em Javascript ficaria assim então:

   //cria o método "method" a todos os protótipos
   Function.prototype.method = function (name, func) {
      this.prototype[name] = func;
      return this;
   };
 
   //adiciona o método "integer" ao prototipo Number
   Number.method('integer', function () {
      return Math[this < 0 ? 'ceil' : 'floor'](this);
   });

Javascript não possui um método que remova espaços em branco no final de strings. Isso pode ser facilmente melhorado com o código:

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

Leave a Reply

Your email address will not be published. Required fields are marked *