Estou escutando uma discussão acalorada sobre Closures, Ruby e Javascript. Detalhes a parte, Javascript suporta funções anônimas (que não são closures) que podem ser passados como argumentos para outras funções.
Não seria otimo que um Array em javascript tivesse o método each para executar um bloco de código para cada elemento desse array? Usando o prototype da entidade Array eu posso adicionar um método each que faz isso:
Array.prototype.each = function(fun) {
if (typeof fun != "function") return;
for (var i=0; i<this.length; i++) {
if(i in this) fun(this[i]);
}
return this;
}
var x = ["cat", "dog", "mouse", "bird"];
x.each(function(i) {
alert(i);
});
Simples, não? Eu ainda posso adicionar outros métodos uteis como o map e o reduce.
São recursos interessantes que podemos utilizar quando for conveniente. Interessante foi descobrir a propriedade arguments, um array com todos os argumentos passados para a função que, se eu conhecesse alguns meses atrás, teria me solucionado alguns problemas
É claro que tudo isso ja vem no Prototype (né peleteiro).