Tipos de namespaces em JavaScript

Tipos de namespaces em JavaScript
JavaScript ““Espaço para nome”É um paradigma de programação que é utilizado para atribuir escopo aos identificadores, como variáveis ​​e nomes de funções. Está acostumado a prevenir colisões entre as variáveis ​​e funções do mesmo nome. Por exemplo, um programa JavaScript requer criar o mesmo nome variável em um contexto diferente. Nesta situação, utilizando “Espaço para nome”Isola os contextos, permitindo que o mesmo identificador seja usado em outros namespaces.

Este post discutirá diferentes tipos de Namespaces em javascript. Então vamos começar!

Jamespace JavaScript

O conceito de adicionar classes, métodos, variáveis ​​e objetos dentro de um recipiente é conhecido como “Espaço para nome”Em JavaScript. O código que você escreve em um programa JavaScript e os métodos predefinidos são armazenados no “janela”Variável, considerada uma“Namespace global““. Este espaço para nome de janela é utilizado sempre que uma nova variável é criada. Além disso, armazenar qualquer valor na variável recém -criada usará seu espaço de nome. É assim que a hierarquia funciona em JavaScript.

Tipos de namespaces em JavaScript

JavaScript suporta dois tipos de namespaces:

  • Estático Espaço para nome
  • Dinâmico Espaço para nome

Discutiremos os dois tipos de namespaces mencionados em detalhes.

Namespace estático em javascript

Quando um "Etiqueta de espaço para nome”É codificado e uma função é definida dentro dela, é conhecida como“Namespace estático““. Permite a reatribuição dos espaços para nome; No entanto, um espaço para nome estático sempre se referirá aos mesmos objetos JavaScript antigos.

Os espaços nomes estáticos do JavaScript são divididos nas categorias abaixo dadas:

  • Namespace estático com Atribuição direta
  • Namespace estático com Notação literal objeto
  • Namespace estático com Padrão de módulo

Agora, vamos entender a funcionalidade de cada um dos tipos de namespace estático dados.

Namespace estático com atribuição direta

Em "Atribuição direta”, As funções são definidas usando o espaço de nome estático já criado. Por exemplo, no exemplo a seguir, criaremos um objeto chamado “estudante,”, Que atua como um espaço de nome estático:

var aluno =

Depois de fazer isso, definiremos duas funções “getName ()" e "getage ()”E associe -os ao“estudante”Namespace:

estudante.getName = function ()
var name = "Alex";
Nome de retorno;
estudante.getage = function ()
var idade = 35;
idade de retorno;
console.log (aluno.getName ());
console.log (aluno.getage ());

Como as funções são atribuídas diretamente ao “estudante“Namespace, isso resultará na seguinte saída:

Namespace estático com notação literal de objeto

Neste tipo de espaço de nome estático, as funções são adicionadas dentro do espaço para nome no declaração de objeto.

No programa abaixo do dado, usamos o notação literal objeto Para definir um espaço de nome estático “estudante”E adicione o“getName ()" e "getage ()”Função dentro de seu escopo:

var aluno =
getName: function ()
var name = "Alex";
Nome de retorno; ,
getage: function ()
var idade = 35;
idade de retorno;
;
console.log (aluno.getName ());
console.log (aluno.getage ());

Saída

Namespace estático com padrão de módulo

O javascript “padrão de módulo”Utiliza a wrapper de função que retorna um objeto. O objeto retornado refere -se à lógica da interface pública do módulo dentro do escopo global.

Esse tipo de espaço nomes estático chama a função, salva o valor retornado na variável de espaço para nome e bloqueia a API do módulo dentro do espaço para nome. As variáveis ​​não incluídas no valor de retorno são mantidas privadas e acessíveis apenas à função que se refere a eles.

Exemplo
Vamos agora definir “estudante" como um namespace estático e envolva -o em uma função:

var aluno = (function ()
retornar
getName: function ()
var name = "Alex";
Nome de retorno;
,
getage: function ()
var idade = 35;
idade de retorno;

; ) ();
console.log (aluno.getName ());
console.log (aluno.getage ());

O valor retornado pelo “getName ()" e "getage ()”Os métodos serão salvos na variável de namespace estática criada:

Namespace dinâmico em javascript

Em vez de codificar um rótulo de namespace, um “Namespace dinâmico" é referenciado dentro do wrapper de função. Esse tipo de espaço para nome elimina o requisito de combinar o valor de retorno para atribuir esses valores ao espaço de nome definido. É utilizado principalmente em situações em que várias instâncias independentes de um módulo são criadas em diferentes casos.

O namespace dinâmico pode ser implementado em JavaScript, passando o espaço para nome Como um “argumento"Ou definindo com o"aplicarPalavra -chave.

Vamos entender os dois procedimentos um por um.

Passando namespace dinâmico como argumento

JavaScript permite que você crie um namespace dinâmico passando isso como um argumento para o função auto-chamada. Essas funções são definidas com a ajuda do argumento aprovado.

Por exemplo, criaremos um “estudante”Namespace e passa como um argumento“std”. Depois disso, definiremos o “getName ()" e "getage ()”Funções utilizando o“std”Argumento:

var aluno = ; (função (std)
std.getName = function ()
var name = "Alex";
Nome de retorno;
;
std.getage = function ()
var idade = 35;
idade de retorno;

)(estudante);
console.log (aluno.getName ());
console.log (aluno.getage ());

A execução do programa acima do rumo mostrará a seguinte saída:

Criação de namespace dinâmico com palavras -chave Aplicar

Outro método para criar um namespace dinâmico é usar o “aplicarpalavra -chave e passar como um argumento. Depois de fazer isso, adicione as funções necessárias com o “essePalavra -chave.

Exemplo

var aluno = ; (function ()
esse.getName = function ()
var name = "Alex";
Nome de retorno;
;
esse.getage = function ()
var idade = 35;
idade de retorno;

).aplicar (aluno);
console.log (aluno.getName ());
console.log (aluno.getage ());

Saída

Tudo isso era informações essenciais sobre o tipos de Namespaces em JavaScript. Você pode pesquisar ainda mais conforme necessário.

Conclusão

O Namespace estático tipo códigos harding o Etiqueta de espaço para nome e define funções dentro, e o Namespace dinâmico tipo é referenciado dentro do wrapper de função. Em JavaScript, o espaço de nome estático é criado com atribuição direta, notação de objeto e padrão de módulo. Por outro. Este post discutiu os tipos de namespaces em JavaScript.