3 - Fullstack Clase Javascript
3 - Fullstack Clase Javascript
Comenzamos en unos
minutos
Javascript: Clase 3
Prototipos, Clases y
herencia
¿Programación orientada a objetos (POO)?
academianumen.com
Es un modelo de programación
informática que organiza el diseño de
software en torno a datos u objetos,
en lugar de funciones y lógica. Se
centra en los objetos que los
desarrolladores quieren manipular en
lugar de enfocarse en la lógica
necesaria para manipularlos. Este
enfoque de programación es
adecuado para programas que son
grandes, complejos y se actualizan o
mantienen activamente.
academianumen.com
Javascript - Orientado a objetos basado en prototipos
academianumen.com
¿Qué es un prototipo (prototype)?
Un objeto en JavaScript tiene otro objeto, llamado prototype. Cuando
pedimos a un objeto una propiedad que no tiene, la busca en su prototipo.
Así, un prototipo es otro objeto que se utiliza como una fuente de
propiedades alternativa.
academianumen.com
Herencia
Cada objeto tiene una propiedad privada (referida como su [[Prototype]]) que mantiene un
enlace a otro objeto llamado su prototipo. Ese objeto prototipo tiene su propio prototipo, y así
sucesivamente hasta que se alcanza un objeto cuyo prototipo es null. Por definición, null no
tiene prototipo, y actúa como el enlace final de esta cadena de prototipos.
academianumen.com
Cadena de prototipos
Los objetos en JavaScript son
"contenedores" dinámicos de
propiedades (referidas como sus
propiedades particulares). Los objetos
en JavaScript poseen un enlace a un
objeto prototipo. Cuando intentamos
acceder a una propiedad de un objeto, la
propiedad no sólo se busca en el propio
objeto sino también en el prototipo del
objeto, en el prototipo del prototipo, y así
sucesivamente hasta que se encuentre
una propiedad que coincida con el
nombre o se alcance el final de la cadena
de prototipos..
academianumen.com
This
A través de esta palabra podemos invocar propiedades y métodos que tenga el objeto
en cuestión.
En Javascript funciona algo diferente debido a que esta palabra también toma en
cuenta los contextos (scope).
academianumen.com
This en el scope global
academianumen.com
Agregar propiedades al objeto windows
Sin necesidad del uso de una variable, es posible agregar nuevas propiedades al
objeto global windows.
Como podrán observar en el código, hemos agregado una nueva propiedad string.
console.log(this.nombre)
academianumen.com
This en el scope de bloque
¿Qué pasaría si ahora intentamos imprimir esa propiedad desde dentro de, por
ejemplo, un objeto?
Veamoslo!!
objeto.imprimir();
academianumen.com
Llamando This desde otro objeto
// Imprimiendo this.nombre desde un objeto
¿Qué pasaría si ahora yo
var objeto = {
quiero llamar a la función
nombre: 'Contexto del Objeto',
imprimir de este objeto desde
imprimir: function () {
otro objeto?
console.log(this.nombre)
}
¿Imprimiría su propio nombre
}
o el nombre del objeto del
cual estoy llamando la
// Llamando la función imprimir desde otro objeto
función?
var objeto2 = {
objeto2.imprimir()
academianumen.com
Función
constructora
La función constructora es la versión de // Función constructora
JavaScript de una clase. Notarás que function Jedi() {
tiene todas las características que this.arma = 'Sable de Luz';
esperas en una función, aunque no this.poder = 'La fuerza'
devuelve nada o crea explícitamente un }
objeto — básicamente sólo define
propiedades y métodos. // Creación de instancias
let jedi = new Jedi();
Para declarar una función constructora
se crea la función igual que cualquier
// Imprimimos en la consola
otra función y después se crea un objeto console.log(j)
utilizando la palabra clave new lo cual
indica que la función original es una
función constructora.
academianumen.com
Recibiendo métodos
Las propiedades de una función // Función constructora
academianumen.com
Clases
Las clases son una mejora sintáctica class Jedi {
academianumen.com
Herencia de clase
Una de las características
fundamentales que nos ayudan a
reutilizar código y simplificar nuestro
trabajo es la herencia de Clases.
Con esta característica podemos
establecer una jerarquía de elementos y
reutilizar características según en qué
nivel se encuentra cada elemento.
Los elementos hijos, además de tener
sus propias propiedades, pueden
heredar las propiedades de su padre, y
así sucesivamente.
academianumen.com
Constructor
class Jedi {
El método constructor es un método
especial para crear e inicializar un objeto constructor(nombre, alias, colorDeSable) {
creado a partir de una clase. this.nombre = nombre;