Javascript constaba de seis tipos de datos undefined , null , boolean , String , Number y Object (incluye el tipo de datos de array). el símboloes un tipo de datos recientemente introducido en ES6, también conocido como JavaScript 6, lo que hace que el número total de tipos de datos en JavaScript sea 7. Es un tipo de datos primitivo, lo que significa que no se puede crear una instancia de Symbol. Los símbolos son tipos de datos inmutables y actúan como identificadores únicos para claves de objetos. Antes de la introducción de Symbol, era muy difícil generar claves de objeto únicas. Era importante mantener claves de objeto únicas para evitar la sobrescritura de valores que tienen una clave de objeto similar, ya que esto podría provocar la pérdida de datos. La introducción de Symbol ayudó a superar este problema, ya que se podían generar claves únicas sin escribir un código complicado. Las claves de objeto únicas se pueden generar usando la función Symbol() . La función Símbolo()devuelve un valor de tipo símbolo. A continuación se presentan ejemplos que demuestran el propósito de los símbolos.
Sintaxis:
let symbol = Symbol();
Ejemplo 1: En este ejemplo, vamos a generar símbolos.
- Código:
<script>
// Write Javascript code here
let sym1 = Symbol()
let sym2 = Symbol(
'mysymbol'
)
console.log(
'Type of sym1: '
,
typeof
(sym1))
console.log(
'Type of sym2: '
,
typeof
(sym2))
</script>
- Producción:
Type of sym1: symbol Type of sym2: symbol
Ejemplo 2: En este ejemplo, veremos que la función Symbol() genera claves de objeto únicas.
- Código:
<script>
// Write Javascript code here
let sym1 = Symbol(
'mysymbol'
)
let sym2 = Symbol(
'mysymbol'
)
console.log(
'sym1===sym2: '
, sym1===sym2)
</script>
- Producción:
sym1===sym2: false
Nota: el tipo de datos del símbolo es un tipo de datos primitivo y no se puede instanciar
Comparación de símbolo y sin símbolo: Consideremos un ejemplo en el que se necesita mantener una lista de calificaciones obtenidas por los estudiantes en un examen en particular. Los estudiantes aún no han sido asignados a sus números de lista. En esta situación, el nombre de un alumno se utilizará como clave de objeto. Sin embargo, puede haber más de un estudiante con nombres similares. Esto puede ocasionar que se sobrescriban las calificaciones obtenidas por cada estudiante, lo que resulta en la pérdida de datos. Para superar este problema, se puede utilizar el tipo de datos de símbolo.
- Código 1: el fragmento de código a continuación muestra el escenario cuando no se usa el símbolo.
<script>
// Write Javascript code here
var
marks = {}
marks[
"Joe"
] = 100
marks[
"Ana"
] = 90
marks[
"Chloe"
] = 95
marks[
"Marie"
] = 75
console.log(marks)
console.log(
'Another student with'
+
' name Chloe appears'
)
marks[
'Chloe'
] = 60
console.log(
'After the marks of the'
+
' fifth student is entered'
)
console.log(marks)
</script>
- Salida: Las marcas de Chloe se sobrescriben cuando aparece otro estudiante con el mismo nombre.
- Código 2: el fragmento de código a continuación muestra el escenario cuando se usa el símbolo
<script>
// Write Javascript code here
var
marks={}
var
sym1=Symbol(
"Joe"
)
marks[sym1]=100
var
sym2=Symbol(
"Ana"
)
marks[sym2]=90
var
sym3=Symbol(
"Chloe"
)
marks[sym3]=95
var
sym4=Symbol(
"Marie"
)
marks[sym4]=75
console.log(marks)
console.log(
'Another student '
+
'with name Chloe appears'
)
var
sym5=Symbol(
"Chloe"
)
marks[sym5]=60
console.log(
'After the marks of '
+
'the fifth student is entered'
)
console.log(marks)
</script>
- Salida: Las notas de Chloe no se sobrescriben cuando aparece otro estudiante con el mismo nombre, no se pierden datos. Tienes que ejecutar esto localmente.
Limitaciones del símbolo:
- Los símbolos se ignoran en el bucle for..in.
- Ignorado por funciones como Object.keys() , Object.getOwnPropertyNames() y JSON.stringify() y, por lo tanto, no se puede serializar.
- El símbolo se utilizó principalmente para garantizar la privacidad. Pero métodos como Object.getOwnPropertySymbols() devuelve una array de cualquier clave basada en símbolos y Reflect.ownKeys() devuelve una array de todas las claves, incluidos los símbolos.
Publicación traducida automáticamente
Artículo escrito por Shreyasi_Chakraborty y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA