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" |
