6.11.08

Classes em JavaScript com Prototype

Aloha...

Pesquisando na net você vai encontrar muitas definições, opiniões e etc, sobre a capacidade do javascript, suas limitações e aplicações. Lá pelo ano 2000/2001, quando utilizávamos IE 5.0/5.5 e Netscape (putz!), tínhamos uma dificuldade com a utilização do script do lado do cliente pois os browsers eram fracos e havia aquela guerra entre o ie e netscape para os padrões. Quem tinha que se virar era o desenvolvedor.

Hoje em dia não é muito diferente, mas já melhorou muito, principalmente com a entrada forte do Firefox no mercado. Por ser um browser rápido e que se dá bem com o js, tem tido uma boa aceitação pelos desenvolvedores e usuários comuns. Com isso, na minha opinião, a M$ está começando a entender que não adianta empurrar os padrões dela por goela abaixo que não adianta.

No meio disso tudo que já disse, a linguagem evoluiu. O que mais gostei nessa evolução foi o framework Prototype, que deu origem a "n" outros frameworks que botam mais firulas em cima do que ele faz. O Prototype nada mais é que uma mãos na roda para o desenvolvedor, facilitando algumas tarefas que seriam chatas de fazer com o JS puro!

Chega de papo! Vou postar abaixo um exemplo do que podemos fazer com o Prototype: Classes.



var ClassTest = Class.create({
initialize: function(name) {
this.name = name
}
});

ClassTest.addMethods({
showMsg: function() {
alert('Meu nome é ' + this.name);
}
});

ClassTest.addMethods({
setName: function(name) {
this.name = name
}
});

var userTest = new ClassTest('João da Silva');
userTest.showMsg();
userTest.setName('Maria da Silva');
userTest.showMsg();



Bom, essa é uma forma interessante que encontrei de criar classes de forma elegante. Se não utilizarmos o framework, seria mais ou menos assim:



function ClassTest(name)
{
this.name = name
}

ClassTest.prototype.showMsg = function()
{
alert('Meu nome é ' + this.name);
}

ClassTest.prototype.setName = function(name)
{
this.name = name
}

var userTest = new ClassTest('João da Silva');
userTest.showMsg();
userTest.setName('Maria da Silva');
userTest.showMsg();



Fica a mesma coisa e não precisa de framework! Aí o que vale é a pessoa ver o melhor design para suas classes!

Abraços!!!