Símbolo JavaScript (com exemplos)

Neste tutorial, você aprenderá sobre o símbolo JavaScript com a ajuda de exemplos.

Símbolo JavaScript

O JavaScript ES6 introduziu um novo tipo de dados primitivo chamado Symbol. Os símbolos são imutáveis ​​(não podem ser alterados) e são únicos. Por exemplo,

 // two symbols with the same description const value1 = Symbol('hello'); const value2 = Symbol('hello'); console.log(value1 === value2); // false

Embora valor1 e valor2 contenham a mesma descrição, eles são diferentes.

Criando símbolo

Você usa a Symbol()função para criar um Symbol. Por exemplo,

 // creating symbol const x = Symbol() typeof x; // symbol

Você pode passar uma string opcional como sua descrição. Por exemplo,

 const x = Symbol('hey'); console.log(x); // Symbol(hey)

Descrição do símbolo de acesso

Para acessar a descrição de um símbolo, usamos o .operador. Por exemplo,

 const x = Symbol('hey'); console.log(x.description); // hey

Adicionar símbolo como uma chave de objeto

Você pode adicionar símbolos como uma chave em um objeto usando colchetes (). Por exemplo,

 let id = Symbol("id"); let person = ( name: "Jack", // adding symbol as a key (id): 123 // not "id": 123 ); console.log(person); // (name: "Jack", Symbol(id): 123)

Os símbolos não estão incluídos em para … no Loop

O for… inloop não itera sobre propriedades simbólicas. Por exemplo,

 let id = Symbol("id"); let person = ( name: "Jack", age: 25, (id): 12 ); // using for… in for (let key in person) ( console.log(key); )

Resultado

 nome idade

Benefício de usar símbolos em objeto

Se o mesmo fragmento de código for usado em vários programas, é melhor usar Symbolsna chave do objeto. É porque você pode usar o mesmo nome de chave em códigos diferentes e evitar problemas de duplicação. Por exemplo,

 let person = ( name: "Jack" ); // creating Symbol let id = Symbol("id"); // adding symbol as a key person(id) = 12;

No programa acima, se o personobjeto também for usado por outro programa, você não gostaria de adicionar uma propriedade que pode ser acessada ou alterada por outro programa. Portanto, ao usar Symbol, você cria uma propriedade exclusiva que pode usar.

Agora, se o outro programa também precisar usar uma propriedade chamada id , basta adicionar um símbolo chamado ide não haverá problemas de duplicação. Por exemplo,

 let person = ( name: "Jack" ); let id = Symbol("id"); person(id) = "Another value";

No programa acima, mesmo que o mesmo nome seja usado para armazenar valores, o Symboltipo de dados terá um valor único.

No programa acima, se a chave da string foi usada, o programa posterior teria alterado o valor da propriedade. Por exemplo,

 let person = ( name: "Jack" ); // using string as key person.id = 12; console.log(person.id); // 12 // Another program overwrites value person.id = 'Another value'; console.log(person.id); // Another value

No programa acima, o segundo user.idsubstitui o valor anterior.

Métodos de Símbolos

Existem vários métodos disponíveis com o Symbol.

Método Descrição
for() Procura por símbolos existentes
keyFor() Retorna uma chave de símbolo compartilhada do registro de símbolo global.
toSource() Retorna uma string contendo a fonte do objeto Symbol
toString() Retorna uma string contendo a descrição do símbolo
valueOf() Retorna o valor primitivo do objeto Symbol.

Exemplo: Métodos de Símbolo

 // get symbol by name let sym = Symbol.for('hello'); let sym1 = Symbol.for('id'); // get name by symbol console.log( Symbol.keyFor(sym) ); // hello console.log( Symbol.keyFor(sym1) ); // id

Propriedades do símbolo

Propriedades Descrição
asyncIterator Retorna o AsyncIterator padrão para um objeto
hasInstance Determina se um objeto construtor reconhece um objeto como sua instância
isConcatSpreadable Indica se um objeto deve ser achatado para seus elementos de matriz
iterator Retorna o iterador padrão para um objeto
match Corresponde a uma string
matchAll Retorna um iterador que produz correspondências da expressão regular em relação a uma string
replace Substitui substrings correspondentes de uma string
search Retorna o índice dentro de uma string que corresponde à expressão regular
split Divide uma string nos índices que correspondem a uma expressão regular
species Cria objetos derivados
toPrimitive Converte um objeto em um valor primitivo
toStringTag Fornece a descrição padrão de um objeto
description Retorna uma string contendo a descrição do símbolo

Exemplo: Exemplo de propriedades do símbolo

 const x = Symbol('hey'); // description property console.log(x.description); // hey const stringArray = ('a', 'b', 'c'); const numberArray = (1, 2, 3); // isConcatSpreadable property numberArray(Symbol.isConcatSpreadable) = false; let result = stringArray.concat(numberArray); console.log(result); // ("a", "b", "c", (1, 2, 3))

Artigos interessantes...