Por isso, esperamos até este ponto que as explicações tenham servido, por um lado, para clarear a programação com Mootools e por outro, para ver que não é tão complicado e está ao alcance de nossas habilidades. Entretanto, devo esclarecer que ainda nos falta bastante para poder dominar o framework Javascript, ou pelo menos ter repassado suas principais funcionalidades.
Para poder explicar tudo de uma maneira simples para que nossos conhecimentos sejam suficientes como para poder fazer exemplos interessantes, deixamos uma série de temas no caminho que também são, sem lugar a dúvidas, essenciais para poder trabalhar com Mootools. É o caso do presente artigo, no qual vamos explicar as funcionalidades avançadas dos Arrays em Mootools.
Mootools dispõe de uma série de bibliotecas, denominadas Native, que oferecem funcionalidades a distintos tipos e estruturas de dados, como os arrays, funções, números, cadeias, classes hash, etc. Estes módulos Native estendem as características básicas de Javascript sobre estes elementos e são ótimos para economizar código em nossos scripts e facilitar a programação.
Portanto, se já estamos familiarizados com os Arrays de Javascript comprovaremos que Mootools nos oferece bastantes ajudas para poder trabalhar com estas estruturas de dados. Se não estivermos familiarizados tudo bem, porque aprenderemos aqui a trabalhar com eles com as facilidades próprias de Mootools.
Primeiro, vamos ver como podemos definir um array e seus conteúdos de uma maneira cômoda, que é própria de Javascript (não faz falta Mootools para isto):
frutas = ["laranja", "banana", "uva"];
Ou um array de duas dimensões, se poderia definir assim:
opcoesPrincipais = [
["Portal","http://www.guiarte.com/"],
["Guias de Guiarte.com", "http://www.guiarte.com/guias/"],
["Outras secoes", "http://www.guiarte.com/secciones/"],
["Servicos", "http://www.guiarte.com/servicios/"],
["Comunidade", "http://www.guiarte.com/usuarios/"]
];
Agora vamos aprender algumas funções de Array que se utilizam bastante em Mootools. Porém antes devemos saber que os arrays em Javascript se utilizam como se fossem classes, com o qual, têm seus próprios métodos e propriedades. Mootools o que faz é definir uma série de métodos adicionais para os Arrays, uns mais úteis que outros.
Como vemos, o array tem um método each que recebe como parâmetro uma função que vai se executar com cada um dos elementos do array. Esta função recebe como parâmetro duas variáveis, uma o valor do elemento atual do array com o que se está iterando e por outra parte, o índice do array. Por isso, dentro da função realmente não temos acesso ao array propriamente dito e sim ao valor e ao índice unicamente do elemento que estamos iterando.
Este código pode ser visto em uma página à parte.
Pois bem, each, recebe uma segunda variável, chamada "bind", que é opcional. Se desejarmos, por meio dessa variável podemos enviar um objeto que poderá se utilizar dentro da função de each com a referência "this". Esta variável this se utiliza em ambientes de programação orientada a objetos, para se referir ao objeto que está recebendo um método. Nós já explicamos um pouco para que servia o bind no artigo Utilização de bind() nos eventos Mootools , a filosofia é a mesma, porém ainda assim vamos mostrar um exemplo no qual seria interessante utilizar o bind nos each de array.
var Somatorio = new Class({
initialize: function(arrayNumeros){
this.suma = 0;
arrayNumeros.each(function(valor){ this.suma += valor;}, this);
}
});
numeros = [20, 2, 3, 5, 10, 5];
meuSomatorio = new Somatorio(numeros);
alert (meuSomatorio.soma);
Neste código criamos uma classe somatório, que recebe um array no construtor e soma os valores desse array, salvando o resultado em uma propriedade "soma". Como podemos ver, no construtor se utiliza each para percorrer os valores do array. O método each recebe dois parâmetros, um é a função que tem que se executar para cada valor e outro o mencionado bind, que neste caso seria this, para que dentro da função do each se possa acessar a este mesmo objeto que se está construindo.
Sendo assim, dentro da função do each, quando fazemos esta instrução:
this.soma += valor;
Mootools sabe que há em this, porque se passou como parâmetro ao próprio each ao ser invocado.
Outra coisa que podemos ver aqui é que a função enviada como parâmetro ao each recebe só o parâmetro "valor", já que o parâmetro índice não o necessito, porque não penso fazer nada com os índices.
Podemos ver este segundo exemplo em funcionamento.
Sem dúvida, o método mais interessante dos arrays é each, porém existem outros muitos métodos muito úteis para trabalho com arrays. Vamos ver alguns exemplos.
Por exemplo, podemos ver este código, para ilustrar seu funcionamento:
capitais = ["Madri", "Paris", "Lisboa"];
capitais.include("Brasilia");
//agora o array tem os elementos Madri", "Paris", "Lisboa", "Brasilia"
capitais.include("Madrid")
//Madri já estava, logo não inclui nada
capitais.each(function (valor){
alert(valor);
});
Podemos ver este exemplo em uma página à parte
["Mercurio", "Terra", "Venus"].indexOf("Venus")
//isto devolve 2
["Mercurio", "Terra", "Venus"].indexOf("Marte")
//neste caso indexOf devolve -1
Podemos ver extend em funcionamento no seguinte código:
capitais = ["Madri", "Paris", "Lisboa"];
novasCapitais = ["Buenos Aires", "Madri"];
capitais.extend(novasCapitais);
//agora o conteúdo do array é "Madri", "Paris", "Lisboa", "Buenos Aires", "Madri"
capitais.each(function (valor){
alert(valor);
});
Como se pode ver o array que recebe o método extend se atualiza com os valores contidos no array que se recebeu por parâmetro em extend.
Pode-se ver este exemplo em funcionamento.
Na documentação de Mootools podemos encontrar mais detalhes sobre os métodos existentes para Array e exemplos de uso. Nós, talvez mais adiante ampliemos estas informações ou então, as deixaremos para o momento que as utilizemos em exemplos.
![]() | mootolls Por: neto-lopes | 30/4/10 |