quarta-feira, 9 de maio de 2007

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

 
BlogBlogs.Com.Br