Um dos pontos de atrito ideológico da primeira estrutura JavaScript era estender protótipos em vez de envolver funções. Estruturas como MooTools e Prototype estendiam protótipos, enquanto o jQuery e outras estruturas menores não o faziam. Cada um deles tinha seus benefícios, mas, no final das contas, todos esses anos depois, ainda acredito que a capacidade de estender protótipos nativos é um recurso enorme do JavaScript. Vamos ver como é fácil capacitar cada instância de uma primitiva estendendo os protótipos!

Todo nativo do JavaScript, como Number, String, Array, Object, etc. tem um prototype. Todo método em um prototype é herdado por todas as instâncias desse objeto. Por exemplo, podemos fornecer cada `Array com uma instância unique estendendo seu protótipo:

Array.prototype.unique = function() {
  return [...new Set(this)];
}

['1', '1', '2'].unique(); // ['1', '2']
new Array('1', '1', '2').unique(); // ['1', '2']

Observe que se o senhor também puder garantir a capacidade de encadeamento retornando this:

['1', '1', '2'].unique().reverse(); // ['2', '1']

A maior crítica à extensão de protótipos sempre foi a colisão de nomes, em que a eventual implementação da especificação é diferente da implementação da estrutura. Embora eu entenda esse argumento, o senhor pode combatê-lo prefixando os nomes das funções. Adicionar superpoderes a um protótipo nativo para que todas as instâncias o tenham é tão útil que eu nunca diria a alguém para não estender um protótipo. #MooToolsFTW.

  • 6 coisas que o senhor não sabia sobre o Firefox OS

    Firefox OS está em todas as notícias de tecnologia e por um bom motivo: A Mozilla finalmente deu aos desenvolvedores da Web a plataforma de que precisam para criar aplicativos da maneira como os criam há anos: com CSS, HTML e JavaScript. O Firefox OS tem se aprimorado rapidamente…

  • Animações JS responsivas e infinitamente escalonáveis

    No final de 2012, não era fácil encontrar projetos de código aberto usando requestAnimationFrame() – esse é o gancho que permite que o código Javascript seja sincronizado com o loop de pintura nativo de um navegador da Web. As animações que usam esse método podem ser executadas a 60 fps e proporcionar…

  • Enviar notificações por e-mail sobre imagens quebradas usando jQuery AJAX

    Normalmente, é melhor reparar caminhos de imagens quebrados o mais rápido possível, pois eles podem prejudicar a credibilidade de um site. E pior ainda é ter um usuário informando o senhor sobre isso. Usando jQuery e PHP, o senhor pode fazer com que sua página o notifique automaticamente sobre…

  • Crie um acordeão MooTools simples e elegante

    Na semana passada, abordei um efeito suave e sutil do MooTools chamado Kwicks. Outra grande criação do MooTools é o Accordion, que funciona como… espere… um acordeão! Nunca fui um grande fã do Weird Al, então isso é o mais próximo possível de tocar um acordeão…