Como aprendimos en el capítulo Tipos de datos, hay ocho tipos de datos en JavaScript. Siete de ellos se denominan “primitivos”, porque sus valores contienen solo un dato (sea un string, un número o lo que sea).
En contraste, los objetos son usados para almacenar colecciones de varios datos y entidades más complejas asociados con un nombre clave. En JavaScript, los objetos penetran casi todos los aspectos del lenguaje. Por lo tanto, debemos comprenderlos primero antes de profundizar en cualquier otro lugar.
Un objeto se puede crear con llaves { … } y una lista opcional de propiedades. Cada propiedad es un par "key: value" (“clave: valor”), donde key es un string (también llamado “nombre de propiedad”) y value puede ser cualquier cosa.
Podemos imaginar un objeto como un gabinete con archivos firmados. Cada pieza de datos es almacenada en su archivo por la clave. Es fácil encontrar un archivo por su nombre o agregar/eliminar un archivo.
Se puede crear un objeto vacío (“gabinete vacío”) utilizando una de estas dos sintaxis:
let user = new Object(); // sintaxis de "constructor de objetos"
let user = {}; // sintaxis de "objeto literal"
Normalmente se utilizan las llaves {...}. Esa declaración se llama objeto literal.
Literales y propiedades
Podemos poner inmediatamente algunas propiedades dentro de {...} como pares “clave:valor”:
let user = { // un objeto
name: "John", // En la clave "name" se almacena el valor "John"
age: 30 // En la clave "age" se almacena el valor 30
};
Una propiedad tiene una clave (también conocida como “nombre” o “identificador”) antes de los dos puntos ":" y un valor a la derecha.
En el objeto user hay dos propiedades:
- La primera propiedad tiene la clave
"name"y el valor"John". - La segunda tienen la clave
"age"y el valor30.
Podemos imaginar al objeto user resultante como un gabinete con dos archivos firmados con las etiquetas “name” y “age”.
Podemos agregar, eliminar y leer archivos de él en cualquier momento.
Se puede acceder a los valores de las propiedades utilizando la notación de punto:
// Obteniendo los valores de las propiedades del objeto:
alert( user.name ); // John
alert( user.age ); // 30
El valor puede ser de cualquier tipo. Agreguemos uno booleano:
user.isAdmin = true;