Símbolo JavaScript Tipo primitivo | Explicado

Símbolo JavaScript Tipo primitivo | Explicado
Um novo tipo primitivo é introduzido em ES6 conhecido como "Símbolo““. Símbolos são objetos embutidos usados ​​para adicionar teclas de propriedade exclusivas para um objeto JavaScript. Essas chaves de propriedade exclusivas não entram em conflito com as chaves adicionadas por outros scripts e estão ocultas dos mecanismos usados ​​para acessar o objeto, como “para… in" laço.

O tipo primitivo do símbolo JavaScript é criado e pode ser compartilhado globalmente. Além disso, também pode ser usado para definir as propriedades ocultas de um objeto. Também existem alguns símbolos JavaScript conhecidos que contêm o comportamento comum do JavaScript.

Este artigo vai explicar Javascript Symbol Tipo primitivo com a ajuda de exemplos adequados. Então vamos começar!

Como criar um tipo primitivo de símbolo em javascript

O global “Símbolo()”A função é utilizada para criar um novo símbolo JavaScript da seguinte maneira:

deixe regid = símbolo ();

Aqui, "Regid”É um novo tipo de símbolo JavaScript.

Você também pode adicionar a descrição do símbolo dentro dos parênteses “()”Da função Symbol (). Esta descrição é considerada útil para fins de depuração e também torna os símbolos mais descritivos:

Deixe Regid = símbolo ('ID do registro');
console.log (regid);

A saída do código fornecido exibirá o tipo primitivo de “Regid”E sua descrição:

Exemplo: como criar um tipo primitivo de símbolo em javascript

No exemplo abaixo, criaremos dois símbolos chamados “nome" e "idade”E aprova suas descrições como um argumento para o“Símbolo()”Função global:

Deixe o nome = símbolo ('Nome do funcionário'),
idade = símbolo ('idade');
console.log (nome);
console.log (idade);

A execução do exemplo acima mencionado mostra a seguinte saída:

Agora, usaremos o JavaScript “tipo deOperador para determinar se “nome" e "idade”As variáveis ​​são criadas como um símbolo ou não:

console.log (nome do nome);
console.log (tipo de idade);

Como você pode ver na saída, o “tipo deO operador retornou “símbolo”Como o tipo de variáveis ​​especificadas:

Lembre -se de que os símbolos são criados apenas com a ajuda do “Símbolo()”Função global. Para o mesmo propósito, usando o “novo”O operador apresentará um erro, pois os símbolos são valores primitivos:

Deixe Regid = new Symbol ();

““Regid”O símbolo não será criado e o seguinte“TypeError" será mostrado:

A seção anterior forneceu o método para criar símbolos como valores de tipo primitivo. Agora, seguiremos em frente e discutiremos como você pode compartilhar símbolos em JavaScript.

Como compartilhar um tipo primitivo de símbolo em javascript

O "Registro de símbolos globais”Suportado pelo ES6 permite que você compartilhe o símbolo criado globalmente, utilizando o“Símbolo.para()”Método em vez de usar o“Símbolo()”Função.

Por exemplo, estamos criando um “Regid”Símbolo com uma descrição usando“Símbolo.para()”Método:

Deixe Regid = símbolo.para ('regid');

Quando o "Símbolo.para()”O método é executado, ele procura o“RegidChave no Registro de Símbolos Globais; Se o “Regid”Símbolo já existe no registro, o“Símbolo.para()”Método o retornará. Em outro caso, um novo “Regid”O símbolo será criado e adicionado ao Registro de Símbolos Globais.

Agora, invocando o “Símbolo.para()Método enquanto passava “Regid”A chave como argumento retornará o existente“Regid”Símbolo contido no Registro de Símbolos Globais:

Deixe StudentId = Símbolo.para ('regid');
console.log (regid === studentID);

A saída mostra “verdadeiro”Para a comparação estrita entre“Regid" e "Identidade estudantil”Porque ambos são iguais em termos de tipo e chaves adicionais:

Para a verificação da chave associada ao “Identidade estudantil”, Vamos executar o “Keyfor ()”Método e passe o“Identidade estudantil”Como argumento:

console.log (símbolo.keyfor (StudentId));

O "keyfor ()”O método retornará“Regid”Como a chave do símbolo do StudentID:

Se você está procurando um símbolo que não seja adicionado no registro de símbolos globais, então o ““keyfor ()”O método retornará“indefinido”Valor para o valor especificado:

Let FuncionárioID = Symbol ('Funcionário');
console.log (símbolo.keyfor (funcionárioID));

Aqui o "ID do Empregado”O símbolo não existe no Registro de Símbolos Globais, porque é criado usando o“Símbolo()" em vez de "Símbolo.para()”Método, e quando o“Símbolo.para()”O método procura no Registro de Símbolos Globais, retornou“indefinido”:

Você viu que criar e compartilhar valores primitivos de símbolo é bem direto. A seção a seguir demonstrará como você pode usar esses símbolos em seu código JavaScript.

Como usar símbolos para criar propriedades ocultas de um objeto em javascript

O Valor Primitivo do Símbolo JavaScript permite que você crie escondido propriedades de um objeto. Para esse fim, você pode criar um “símbolo”E utilizá -lo como a chave de propriedade de um objeto. A propriedade criada será ignorada pelo para… in loop, e outro script não seria capaz de acessá -lo diretamente porque o “símbolo”Não está incluído em outros scripts. Dessa maneira, os símbolos são considerados ideais para ocultar propriedades do objeto.

Exemplo: como usar símbolos para criar propriedades ocultas de um objeto em javascript

Primeiro de tudo, criaremos um “Articlestatus”Objeto que compreende os três símbolos a seguir como suas propriedades ocultas:

Deixe articlestatus =
In_Progress: Symbol ('Artigo em progresso'),
Concluído: Símbolo ('Artigo concluído'),
Finalizado: Símbolo ('Artigo finalizado'),
;

Na próxima etapa, adicionaremos outro símbolo chamado “meu status”:

deixe mystatus = símbolo ('mystatus');

Aí vem a parte emocionante, no “tarefa“Objeto, adicionaremos duas propriedades, uma é“descrição,"E o outro é" [meu status]”. “[meu status]”É uma propriedade calculada do objeto de tarefas, pois é derivado do“meu status”Símbolo e seu valor compreende o“Concluído”Propriedade oculta do“Articlestatus”Objeto:

Deixe a tarefa =
[Mystatus]: Articlestatus.Concluído,
Descrição: 'Javascript Symbol Primitive Type'
;
console.log (tarefa);

Saída

A saída acima mencionada significa que os símbolos funcionam perfeitamente para criar propriedades ocultas que só podem ser acessadas com seus objetos associados.

Símbolos conhecidos em JavaScript

O ES6 suporta muitos símbolos predefinidos que contêm o comportamento comum de JavaScript, conhecido como “bem conhecido”Símbolos. Esses símbolos conhecidos representam a propriedade estática do “Símbolo”Objeto.

Vamos conferir os símbolos mais conhecidos de JavaScript.

Símbolo.Hasinstance em JavaScript

Símbolo.hasinstance é um símbolo usado para determinar se o objeto construtor identifica o objeto especificado como sua instância ou não.

Sintaxe do símbolo.Hasinstance em JavaScript

[Símbolo.hasinstance] (objeto)

Aqui o "Símbolo.hasinstance”Símbolo aceita um“objeto”Como argumento.

Exemplo: Símbolo.Hasinstance em JavaScript

Normalmente, quando uma instância do operador é usada como “Instância do objeto do tipo“, JavaScript invoca o“Símbolo.hasinstance”Símbolo. Então, ele verifica se o “objeto”É uma instância do outro especificado“tipo“Objeto ou não.

No exemplo seguinte, a matriz “[]”Não é uma instância do“Livro”Classe, então a“instancia de”O operador retornará“falso”Como saída:

livro escolar

console.log ([] instância do livro);

Saída

Você pode adicionar o “Símbolo.hasinstance“Símbolo para definir a matriz“[]"Como uma instância do"Livro" Aula:

livro escolar
estático [símbolo.hasinstance] (obj)
Retorno da matriz.isarray (obj);


console.log ([] instância do livro);

Saída

Portanto, o “instancia deO operador retornou “verdadeiro”Depois de executar a verificação especificada na matriz“[]”.

Símbolo.ISCONCATSPREGADA EM JAVASCRIPT

O Símbolo.ISCONCATSPREATABLE O símbolo retorna um valor booleano que determina se um objeto especificado é adicionado individualmente ao resultado do “concat ()”Função ou não.

Sintaxe do símbolo.ISCONCATSPREGADA EM JAVASCRIPT

[Símbolo.ISCONCATSPREATABLE]: Valor

Aqui, "valor”É usado para definir o“boleano" valor de Símbolo.ISCONCATSPREATABLE símbolo, onde “verdadeiro”Permite que o símbolo adicione individualmente os elementos do objeto e“falso”Vai concatenar o objeto especificado como um todo.

Exemplo: Símbolo.ISCONCATSPREGADA EM JAVASCRIPT

Em primeiro lugar, criaremos um “obj1”JavaScript, que possui as seguintes propriedades:

Seja obj1 =
0: 'JS',
1: 'Tipo primitivo de símbolo',
Comprimento: 2
;

Na próxima etapa, vamos concatenar “obj1" com ['Ensino'] Array usando o “concat ()”Função:

Deixe Info = ['Ensino'].concat (obj1);
console.log (info);

A função concat () não espalhará os elementos individuais de “obj1”Enquanto concorda com isso com ['Ensino'] variedade:

Se você quiser adicionar individualmente os elementos de “obj1”Para a matriz, você deve adicionar o Símbolo.ISCONCATSPREATABLE Símbolo como uma propriedade para “obj1”E defina seu valor como“verdadeiro”:

Seja obj1 =
0: 'JS',
1: 'Tipo primitivo de símbolo',
Comprimento: 2,
[Símbolo.ISCONCATSPREATABLE]: Verdadeiro
;
Deixe Info = ['Ensino'].concat (obj1);
console.log (info);

Confira a saída abaixo do ritmo; o "obj1”Os elementos são adicionados individualmente no resultante“informações" variedade:

Nós compilamos todas as informações essenciais relacionadas ao tipo de símbolo JavaScript.

Conclusão

Usando o Símbolo() Função global, você pode criar um tipo primitivo de símbolo JavaScript que contém um valor único, enquanto o Símbolo.para() O método permite criar um símbolo que possa ser compartilhado globalmente. Javascript Symbol Tipo primitivo é usado principalmente para definir as propriedades ocultas de um objeto. Este artigo explicou Javascript Symbol Tipo primitivo com a ajuda de exemplos adequados.