Estendendo a funcionalidade do tipo String
Olá a todos.
Vamos falar um pouco sobre javascript.
Conhece o tipo String. Já sentiu falta alguma vez de algum recurso que o tipo não dispõe? Eu já; e um exemplo na cara é o trim (aquele que retira os espaços das extremidades).
Incrível o javascript não ter, não é... Mas tem uma coisa incrível que o javascript tem, que é a possibilidade de estender a funcionalidade de qualquer classe e tipo de dados.
Cada elemento tem uma propriedade chamada prototype, que nos permite a definição de novos métodos da classe.
Vou mostrar como eu fiz minha extensão da classe String:
primeiro vamos criar o trimLeft - que retira todos os espaços à esquerda da string:String.prototype.trimLeft = function() { return this.replace(/\s*((\S+\s*)*)/, "$1"); };
Agora o trimRight - retira os espaços à direita:String.prototype.trimRight = function() { return this.replace(/((\s*\S+)*)\s*/, "$1"); };
Por fim, usando os dois, o método trim, que 'capa' a string:String.prototype.trim = function() { return this.trimLeft().trimRight(); };
Legal! Legal! Legal! Eh..... como é que usa? Eu tentei trim(variavel) mas não funcionou...
Agora vamos à parte mais legal da parada: como o método foi definido para o tipo String, todas as instâncias de String possuem estes três novos métodos:var variavel = " Olá ";
var var1 = variavel.trimLeft(); // var1 é "Olá "
var var2 = variavel.trimRight(); // var2 é " Olá"
var var3 = variavel.trim(); // var3 é "Olá"
Maneeeeeeeeiro...
Assim como o tipo string é possível estender qualquer tipo de dados em javascript adicionando funcionalidades através do membro prototype. Solte a imaginação e faça bom uso!
Grande abraço a todos e até a próxima!
Nenhum comentário:
Postar um comentário