Introducción a JavaScript
¿Qué es JavaScript y para qué sirve?
Accede a la versión más actualizada de este contenido
¿Por qué JavaScript?
Elementos de un Lenguaje de Programación: Variables, Funciones y Sintaxis
¿Qué es una variable?
Qué son las funciones en JavaScript
¿Qué es una función declarativa y una expresiva?
Playground: retorna el tipo
Quiz: Introducción a JavaScript
Bases de JavaScript
Scope
Hoisting
Coerción
Valores: Truthy y Falsy
Operadores: Asignación, Comparación y Aritméticos.
Playground: compara un número secreto
Quiz: Bases de JavaScript
Condicionales
Condicionales: If, Else, else if
Switch
Playground: tienda de tecnologÃa
Quiz: Condicionales
Arrays
¿Qué es un array?
Playground: detecta el elemento impostor de un array
Quiz: Arrays
Loops
Loops: For y For...of
Loops: While
Playground: rescata al estudiante
Objects
Objects
Objects: Función constructora
Playground: permiso para conducir
Métodos de Arrays
Métodos de recorridos de Arrays
Recorriendo Arrays con .find(), .forEach() y .some()
Eliminando elementos de un Array
Playground: Arregla el Bug
Quiz: Métodos de Arrays
Próximos pasos con JavaScript
Continúa con el Curso Práctico de JavaScript
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Diego De Granda
Un objeto es una estructura de datos que permite almacenar valores mediante propiedad - valor a través de la sintaxis de llaves ({}
) y separados por comas.
En las propiedades del objeto es opcional colocar las comillas. En el caso de que haya espacios, es obligatorio.
var objeto = {
clave1: "valor1",
"clave 2": "valor2",
}
Excepto por los primitivos y las funciones, todo es un objeto en JavaScript.
En programación orientada a objetos, un objeto es una representación de la realidad, en el cual sus caracterÃsticas propias se definen como atributos y sus acciones se definen como métodos.
En otras palabras, los atributos son las variables y los métodos son las funciones propias de cada objeto.
Por ejemplo, definamos el objeto miAuto
. Se coloca entre comillas la propiedad año
porque el lenguaje no admite caracteres especiales del español. Aunque en ciertas situaciones si admite.
var miAuto = {
marca: "Toyota",
modelo: "Corolla",
"año": 2020,
detalle: function () {
console.log("Es un auto")
}
}
Las propiedades marca
, modelo
y "año"
son los atributos del objeto miAuto
. La propiedad detalle
es un método del objeto miAuto
.
A diferencia de los arrays, únicamente es necesario saber la propiedad del objeto para acceder a su valor.
Existen tres formas para acceder al valor de un objeto:
La notación de corchetes ya ese familiar para ti, similar a los arrays, indicamos entre corchetes la propiedad del objeto entre comillas.
objeto["propiedad"]
Por ejemplo, accedamos a las propiedades del objeto miAuto
creado anteriormente.
miAuto["marca"] // "Toyota"
miAuto["modelo"] // "Corolla"
miAuto["año"] // 2020
miAuto["detalle"] // Æ’ detalle()
Observa que cuando accedes a un método, únicamente muestra la función, esto sucede porque la propiedad guarda dicha función que aún no es ejecutada. Para ejecutarla hay que utilizar los paréntesis.
miAuto["detalle"]() // "Es un auto"
Finalmente, ten cuidado con las comillas, si nos las usas, estás haciendo referencia a una variable. En este caso existirán tres posibilidades:
undefined
.var propiedad1 = "marca"
miAuto[propiedad1] // "Toyota"
var propiedad2 = "nombre"
miAuto[propiedad2] // undefined
miAuto[modelo] // ReferenceError: modelo is not defined
La notación de punto indicamos con un punto la propiedad del objeto. Si existen espacios, la única forma de acceder a esa propiedad es mediante la notación de corchetes.
objeto.propiedad
Por ejemplo, accedamos a las propiedades del objeto miAuto
creado anteriormente.
miAuto.marca // "Toyota"
miAuto.modelo // "Corolla"
miAuto.añó // 2020
miAuto.detalle // Æ’ detalle()
Igualmente, para ejecutar el método hay que utilizar los paréntesis.
miAuto.detalle() // "Es un auto"
La notación punto te debe de parecer familiar, ya que asà usábamos los diferentes atributos y métodos de los arrays, como length
o map
.
Esto es debido a que los arrays también son objetos en JavaScript. Por esta razón, también podemos utilizar la notación de corchetes, pero no es recomendable.
var array = [1, 2, 3]
array["length"] // 3
var newArray = array["map"](function (el) {
return el * 2
})
newArray // [2,4,6]
Para añadir propiedades de un objeto, utilizamos la notación de corchetes o de punto con la nueva propiedad, asignándole su respectivo valor.
Por ejemplo, añadamos la propiedad color
del objeto miAuto
.
miAuto["color"] = "rojo"
// o
miAuto.color = "rojo"
console.log(miAuto)
/* {
marca: 'Toyota',
modelo: 'Corolla',
'año': 2020,
detalle: Æ’ detalle(),
color: 'rojo' <---- nueva propiedad
} */
Para modificar propiedades de un objeto, utilizamos la notación de corchetes o de punto con la propiedad especÃfica, asignándole su nuevo valor.
Por ejemplo, modifiquemos la propiedad marca
, de "Toyota"
a "Ford"
, del objeto miAuto
.
miAuto["marca"] = "Ford"
// o
miAuto.marca = "Ford"
console.log(miAuto)
/* {
marca: 'Ford', <--- Cambió de valor
modelo: 'Corolla',
'año': 2020,
detalle: Æ’ detalle(),
} */
Para eliminar propiedades de un objeto, utilizamos la palabra reservada delete
seguido de la propiedad del objeto.
Por ejemplo, eliminemos la propiedad marca
del objeto miAuto
.
delete miAuto["marca"]
// o
delete miAuto.marca
console.log(miAuto)
/* {
modelo: 'Corolla', <--- No existe la propiedad marca
'año': 2020,
detalle: Æ’ detalle(),
} */
this
En JavaScript, el objeto contexto this
hace referencia a diferentes valores según su contexto de ejecución. Como es un tema complejo de programación orientada a objetos, no profundizaré.
En objetos, el contexto this
hace referencia al propio objeto. Esto sirve para acceder a los atributos y métodos propios del objeto.
Por ejemplo, cambiemos la función detalle
del objeto miAuto
para mostrar un mensaje personalizado.
var miAuto = {
marca: "Toyota",
modelo: "Corolla",
"año": 2020,
detalle: function () {
console.log(`Auto ${modelo} del ${año}.`)
}
}
miAuto.detalle() //ReferenceError: modelo is not defined
Si ejecutamos la función miAuto.detalle()
mostrará un error de referencia, que modelo no está definido.
Hagamos un pequeño cambio, utilicemos la notación de punto para acceder a los valores de la propiedad.
var miAuto = {
//...
detalle: function () {
console.log(`Auto ${miAuto.modelo} del ${miAuto.año}.`)
},
}
miAuto.detalle() // 'Auto Corolla del 2020.'
¡Funcionó! Sin embargo, necesito crear otro objeto con el mismo código.
var otroAuto = {
marca: "Toyota",
modelo: "Corolla",
"año": 2020,
detalle: function () {
console.log(`Auto ${miAuto.modelo} del ${miAuto.año}.`)
},
}
otroAuto.detalle() //ReferenceError: miAuto is not defined
Ahora muestra nuevamente un error de referencia del objeto miAuto
. ¿Pero cambio miAuto
por otroAuto
y problema resuelto? SÃ, pero como programador no debemos cambiar manualmente el código que puede ser reutilizado.
Realicemos otro cambio, utilicemos el objeto contexto this
para hacer referencia a nuestro objeto.
var miAuto = {
//...
detalle: function () {
console.log(`Auto ${this.modelo} del ${this.año}.`)
},
}
miAuto.detalle() //'Auto Corolla del 2020.'
¡Funcionó! Ahora creemos otro objeto.
var otroAuto = {
// ...
detalle: function () {
console.log(`Auto ${this.modelo} del ${this.año}.`)
},
}
otroAuto.detalle() //'Auto Corolla del 2020.'
¡Volvió a funcionar! Ahora podremos crear varios objetos sin cambiar una y otra vez la referencia al objeto this
. En el objeto miAuto
, this
es igual a miAuto
; mientras que en el objeto otroAuto
, this
es igual a otroAuto
. Por eso podemos acceder a los atributos y métodos, independientemente del objeto creado.
Crear varios objetos a partir de un código base se denomina crear una instancia.
Contribución creada por Andrés Guano (Platzi Contributor).
Aportes 433
Preguntas 51
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?