Juegos en Red - Grado en Diseño y Desarrollo de Videojuegos
2026-09-09
JavaScript usa herencia prototípica, no clases tradicionales
Nota
A diferencia de Java o C++, JavaScript no tiene clases “reales” en su núcleo
La forma más directa de crear objetos
Usando Object.create() para heredar
goblin hereda el método atacar() de enemigothis se refiere al objeto que invoca el métodoCreando cadenas de herencia
Creando el objeto base
this para acceder a propiedadesCreando un prototipo intermedio
personajeBaseCreando la instancia final
mover() y atacar()Object.keys(INSTANCIA) antes y después.La forma más común y legible
objeto.propiedadJavaScript permite modificar objetos en tiempo de ejecución
Recorriendo todas las propiedades
Comprobando existencia de propiedades
in verifica si existe la propiedad (propia o heredada)hasOwnProperty() verifica solo propiedades propiasObteniendo claves y valores como arrays
El patrón clásico pre-ES2015
new para crear instanciasthis se refiere al nuevo objeto creadoAñadiendo métodos al prototipo
this de la instanciaCreando instancias
new para invocar constructoresDefiniendo el constructor padre
Extendiendo la funcionalidad
Personaje.call(this, ...) llama al constructor padreGuerreroEstableciendo la herencia correctamente
Object.create() establece el prototipo correctoconstructorUsando la herencia completa
conan tiene acceso a métodos de ambos constructoresSintaxis moderna y clara
Declarando una clase
class seguida del nombreconstructor() se ejecuta al crear instanciasAñadiendo comportamiento
function keywordCreando subclases
extends establece la herenciasuper() llama al constructor de la clase padrethis en el constructor hijoExtendiendo métodos heredados
super.nombreMetodo() llama a la versión del padrePropiedades calculadas y validación
Propiedades de solo lectura
get antes del nombreValidación al asignar
set antes del nombre_ como prefijoAsignación transparente
Métodos de la clase, no de instancias
this de instanciaPalabra clave static
static antes del métodoInvocación sobre la clase
NombreClase.metodoEstatico()Instanciando objetos
newTratamiento uniforme de objetos diferentes
Por qué usar la sintaxis moderna
extends y super() más directosTip
La sintaxis de clases es la recomendada para proyectos nuevos
Dos formas, mismo resultado
| Aspecto | Prototipos | Clases ES2015+ |
|---|---|---|
| Sintaxis | Verbosa y manual | Clara y estructurada |
| Herencia | Object.create() y call() |
extends y super() |
| Métodos | Funcion.prototype.metodo |
Dentro de la clase |
| Uso actual | Legacy code | Recomendado |
Importante
Las clases son azúcar sintáctico: por debajo siguen usando prototipos
