Símbolo JavaScript Tipo primitivo | Explicado

Símbolo JavaScript Tipo primitivo | Explicado
Se introduce un nuevo tipo primitivo en ES6 conocido como "Símbolo". Los símbolos son objetos integrados utilizados para agregar claves de propiedad únicas para un objeto JavaScript. Estas claves de propiedad únicas no entrarán en conflicto con las claves agregadas por otros scripts y están ocultos a los mecanismos utilizados para acceder al objeto, como "para ... en" bucle.

El tipo de símbolo de JavaScript se crea y se puede compartir a nivel mundial. Además, también se puede usar para definir las propiedades ocultas de un objeto. También existen algunos símbolos de JavaScript conocidos que contienen el comportamiento común de JavaScript.

Este artículo explicará Tipo primitivo del símbolo de JavaScript con la ayuda de ejemplos adecuados. Entonces, comencemos!

Cómo crear un símbolo de tipo primitivo en JavaScript

Lo global "Símbolo()La función se utiliza para crear un nuevo símbolo de JavaScript de la siguiente manera:

Let Regid = Symbol ();

Aquí, "regido"Es un nuevo símbolo de JavaScript Tipo primitivo.

También puede agregar la descripción del símbolo dentro del paréntesis "()"De la función símbolo (). Esta descripción se considera útil para fines de depuración y también hace que los símbolos sean más descriptivos:

Let Regid = Symbol ('ID de registro');
consola.log (regido);

La salida del código dado mostrará el tipo primitivo de "regido"Y su descripción:

Ejemplo: cómo crear un símbolo de tipo primitivo en JavaScript

En el ejemplo a continuación, crearemos dos símbolos llamados "nombre" y "edad"Y pase sus descripciones como un argumento al"Símbolo()"Función global:

Let Name = Symbol ('Nombre del empleado'),
edad = símbolo ('edad');
consola.log (nombre);
consola.log (edad);

La ejecución del ejemplo anterior muestra la siguiente salida:

Ahora, usaremos el JavaScript "tipo de"Operador para determinar si"nombre" y "edad"Las variables se crean como un símbolo o no:

consola.log (nombre de typeof);
consola.log (typeOf Age);

Como puede ver en la salida, el "tipo de"El operador regresó"símbolo"Como el tipo de las variables especificadas:

Recuerde que los símbolos solo se crean con la ayuda del "Símbolo()"Función global. Para el mismo propósito, usando el "nuevoEl operador lanzará un error ya que los símbolos son valores primitivos:

Let regid = new Symbol ();

"regido"El símbolo no se creará y el siguiente"Error de tecleado" se mostrará:

La sección anterior proporcionó el método para crear símbolos como valores de tipo primitivo. Ahora, avanzaremos y discutiremos cómo puede compartir símbolos en JavaScript.

Cómo compartir un símbolo de tipo primitivo en JavaScript

El "Registro de símbolos globales"Con el apoyo del ES6 le permite compartir el símbolo creado a nivel mundial utilizando el"Símbolo.para()"Método en lugar de usar el"Símbolo()" función.

Por ejemplo, estamos creando un "regido"Símbolo con una descripción usando"Símbolo.para()" método:

Deje regido = símbolo.para ('regido');

Cuando el "Símbolo.para()"Se ejecuta el método, busca el"regido"Clave en el registro de símbolos globales; Si el "regido"El símbolo ya existe en el registro, el"Símbolo.para()El método lo devolverá. En otro caso, un nuevo "regidoSe creará y se agregará símbolo al Registro de Símbolos Globales.

Ahora, invocando el "Símbolo.para()"Método mientras pasa"regido"La clave como argumento devolverá el existente"regido"Símbolo contenido en el Registro de símbolos globales:

Deja que StudentId = símbolo.para ('regido');
consola.log (regid === studentId);

La salida muestra "verdadero"Para la comparación estricta entre"regido" y "Identificación del Estudiante"Porque ambos son iguales en términos de tipo y claves agregadas:

Para la verificación de la clave asociada con el "Identificación del Estudiante", Ejecutaremos el "Keyfor ()"Método y pasar el"Identificación del Estudiante"Como argumento:

consola.registro (símbolo.KeyFor (StudentId));

El "Keyfor ()"El método volverá"regido"Como la clave del símbolo de StudentID:

Si está buscando un símbolo que no se agrega en el Registro de Símbolos Globales, entonces el "Keyfor ()"El método volverá"indefinido"Valor para el valor especificado:

Let EmployeeId = Symbol ('EmployeeId');
consola.registro (símbolo.KeyFor (EmployeeId));

Aquí el "ID de empleado"El símbolo no existe en el Registro de Símbolos Globales, porque se crea usando el"Símbolo()" en lugar de "Símbolo.para()"Método, y cuando el"Símbolo.para()"El método lo busca en el registro de símbolos globales, regresó"indefinido":

Has visto que crear y compartir los valores primitivos del símbolo es bastante sencillo. La siguiente sección demostrará cómo puede usar estos símbolos en su código JavaScript.

Cómo usar símbolos para crear propiedades ocultas de un objeto en JavaScript

El valor primitivo del símbolo de JavaScript le permite crear oculto Propiedades de un objeto. Para este propósito, puede crear un "símbolo”Y utilícelo como clave de propiedad de un objeto. La propiedad creada será omitida por el para ... en bucle, y otro script no podría acceder a él directamente porque el "símbolo"No está incluido en otros scripts. De esta manera, los símbolos se consideran ideales para ocultar las propiedades de los objetos.

Ejemplo: Cómo usar símbolos para crear propiedades ocultas de un objeto en JavaScript

En primer lugar, crearemos un "articlestatusObjeto que comprende los siguientes tres símbolos como sus propiedades ocultas:

Deje que Articlestatus =
In_progress: símbolo ('Artículo en progreso'),
Completado: símbolo ('Artículo completado'),
Finalizado: símbolo ('Artículo finalizado'),
;

En el siguiente paso, agregaremos otro símbolo llamado "mi estado":

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

Aquí viene la parte emocionante, en el "tarea"Objeto, agregaremos dos propiedades, una es"descripción,"Y el otro es" [mi estado]". "[mi estado]"Es una propiedad calculada del objeto de tarea, ya que se deriva del"mi estado"El símbolo y su valor comprenden el"TERMINADO"Propiedad oculta del"articlestatus" objeto:

Dejar tarea =
[Mystatus]: Articlestatus.TERMINADO,
Descripción: 'JavaScript Symbol Tipo primitivo'
;
consola.registro (tarea);

Producción

La salida dada anteriormente significa que los símbolos funcionan perfectamente para crear propiedades ocultas a las que solo se puede acceder con sus objetos asociados.

Símbolos bien conocidos en JavaScript

ES6 admite muchos símbolos predefinidos que contienen el comportamiento común de JavaScript, conocido como "bien conocido"Símbolos. Estos símbolos bien conocidos representan la propiedad estática del "Símbolo" objeto.

Veamos los símbolos más útiles conocidos de JavaScript.

Símbolo.Hasinstance en JavaScript

Símbolo.hainstance es un símbolo que se usa para determinar si el objeto constructor identifica el objeto especificado como su instancia o no.

Sintaxis del símbolo.Hasinstance en JavaScript

[Símbolo.Hasinstance] (objeto)

Aquí el "Símbolo.hainstance"El símbolo acepta un"objeto"Como argumento.

Ejemplo: símbolo.Hasinstance en JavaScript

Por lo general, cuando se usa una instancia de operador como "instancia de objeto de tipo", JavaScript invoca el"Símbolo.hainstance" símbolo. Entonces, verifica si el "objeto"Es una instancia de la otra especificada"tipo"Objeto o no.

En el siguiente ejemplo, la matriz "[]"No es una instancia del"Libro"Clase, entonces el"en vez de"El operador regresará"FALSO"Como salida:

Libro de clase

consola.log ([] instancia de libro);

Producción

Puedes agregar el "Símbolo.hainstance"Símbolo para definir la matriz"[]"Como instancia del"Libro" Clase:

Libro de clase
estático [símbolo.Hasinstance] (obj)
matriz de retorno.isarray (obj);


consola.log ([] instancia de libro);

Producción

Por lo tanto, la "en vez de"El operador regresó"verdadero"Después de realizar la verificación especificada en la matriz"[]".

Símbolo.Iconcatspreadable en JavaScript

El Símbolo.ESCONCATSPRADABLE El símbolo devuelve un valor booleano que determina si un objeto especificado se agrega individualmente al resultado del "concat ()"Función o no.

Sintaxis del símbolo.Iconcatspreadable en JavaScript

[Símbolo.IsConcatsPreadable]: valor

Aquí, "valor"Se usa para establecer el"booleano" valor de Símbolo.ESCONCATSPRADABLE símbolo, donde "verdadero"Permite que el símbolo agregue individualmente los elementos del objeto y"FALSO”Concatenará el objeto especificado en su conjunto.

Ejemplo: símbolo.Iconcatspreadable en JavaScript

En primer lugar, crearemos un "obj1JavaScript, que tiene las siguientes propiedades:

Deje obj1 =
0: 'JS',
1: 'Tipo primitivo del símbolo',
Longitud: 2
;

En el siguiente paso, concatenaremos "obj1" con ['Enseñando'] matriz usando el "concat ()" función:

Sea info = ['enseñar'].concat (obj1);
consola.registro (información);

La función concat () no propagará los elementos individuales de "obj1"Mientras lo concatena con ['Enseñando'] formación:

Si desea agregar individualmente los elementos de "obj1"Para la matriz, tienes que agregar el Símbolo.ESCONCATSPRADABLE Símbolo como propiedad para "obj1"Y establece su valor en"verdadero":

Deje obj1 =
0: 'JS',
1: 'Tipo primitivo del símbolo',
Longitud: 2,
[Símbolo.IsConcatsPreadable]: verdadero
;
Sea info = ['enseñar'].concat (obj1);
consola.registro (información);

Consulte la salida dada a continuación; el "obj1"Los elementos se agregan individualmente en el resultado"información"Array:

Hemos compilado toda la información esencial relacionada con el tipo primitivo del símbolo de JavaScript.

Conclusión

Utilizando el Símbolo() Función global, puede crear un tipo primitivo de símbolo JavaScript que contenga un valor único, mientras que el Símbolo.para() El método le permite crear un símbolo que se pueda compartir a nivel mundial. JavaScript Símbolo El tipo primitivo se usa principalmente para definir las propiedades ocultas de un objeto. Este artículo explicó Tipo primitivo del símbolo de JavaScript con la ayuda de ejemplos adecuados.