# JavaScript Module Pattern (Padrão de Módulo)

> Module Pattern JavaScript: organização e encapsulamento profissional. Padrão clássico de design para escrever código modular e reutilizável. Domine!

URL: https://dpw.dev/javascript/javascript-module-pattern-padrao-modulo/  
Publicado em: 2014-11-03  
Categoria: javascript  
Tags: planejamento  
Autor: Tárcio Zemel

Em JavaScript, o **Module Pattern** ou **Padrão de Módulo** é um padrão de codificação bastante comum. Em geral, é bem compreendido, mas há uma série de usos avançados que podem passar despercebidos. Neste artigo, veja os conceitos básicos sobre o Module Pattern e algumas informações mais avançadas sobre o padrão.

> Artigo baseado em [JavaScript Module Pattern: In-Depth](http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html).

## O básico sobre Module Pattern

Para começar, vamos a uma visão global sobre o Padrão de Módulo em JavaScript, já conhecido desde [o post de Eric Miraglia a respeito](http://yuiblog.com/blog/2007/06/12/module-pattern/) há alguns anos atrás -- mesmo que você já tenha lido o [artigo sobre JavaScript IIFE como contêiner de códigos](/javascript/javascript-iife-conteiner-de-codigos/), talvez seja interessante rever o básico.

### Anonymous Closures (Closures Anônimos)

**Anonymous Closures** são o construto fundamental em Module Pattern que tornam tudo isso possível e são uma das melhores característica de JavaScript: é possível criar uma função anônima e executá-la imediatamente. Todo o código que é executado dentro da função esta no escopo do closure (algo como "fechamento"), o que proporciona privacidade e estado durante toda a vida da aplicação.

```javascript
(function () {
    // Todas variáveis e funções estão somente neste escopo
    // e ainda mantêm acesso a todos os globais
}());

```

Observe a `()` em torno da função anônima. Isto é requerido pela linguagem, uma vez que declarações que começam com a função de token são sempre considerados declarações de função. Incluir `()` cria uma expressão de função.

### Global Import

JavaScript tem um recurso conhecido como **implied globals** (globals implícitas). Sempre que um nome é usado, o interpretador volta pela cadeia de escopo em busca de uma declaração de variável (`var`) para esse nome. Se nada for encontrado, a variável é assumida como global; se é usado em um assignmente, o global é criado se não existir. Isso significa que o uso ou a criação de variáveis

---

Fonte: [dpw - desenvolvimento para web](https://dpw.dev/) (pt-BR).
Guia para agentes: https://dpw.dev/llms.txt
Índice completo: https://dpw.dev/sitemap-index.xml
Feed: https://dpw.dev/rss.xml
