JavaScript

JavaScript

Tutorial JavaScript: Clases y objetos

JavaScript clases objetos: creación y uso. Domina la creación y uso de clases y objetos en JavaScript con ejemplos prácticos y detallados.

Aprende JavaScript GRATIS y certifícate

En JavaScript, las clases y objetos son conceptos fundamentales de la programación orientada a objetos (OOP, Object-Oriented Programming). La OOP es un paradigma de programación que permite organizar el código de manera estructurada y modular.

Clases

Las clases en JavaScript son una plantilla o modelo que define una entidad, sus propiedades y comportamientos. Se puede pensar en una clase como un molde a partir del cual se crean múltiples objetos con características similares. A partir de ECMAScript 2015 (ES6), las clases se introdujeron en JavaScript como una sintaxis más limpia y sencilla para trabajar con objetos y herencia.

Para declarar una clase en JavaScript, se utiliza la palabra clave class seguida del nombre de la clase. El nombre de la clase, por convención, debe comenzar con una letra mayúscula.

class Persona {
  // Cuerpo de la clase
}

En el cuerpo de la clase, se pueden definir propiedades y métodos que estarán asociados con los objetos creados a partir de esta clase.

Constructor

El constructor es un método especial dentro de una clase, que se ejecuta automáticamente cuando se crea un objeto a partir de esa clase. Se utiliza para inicializar los valores de las propiedades del objeto. Para definir un constructor, se utiliza la palabra clave constructor seguida de los argumentos que se recibirán, si es necesario, y se colocan entre paréntesis.

class Persona {
  constructor(nombre, apellido, edad) {
    this.nombre = nombre;
    this.apellido = apellido;
    this.edad = edad;
  }
}

Aquí, el constructor de la clase Persona acepta tres argumentos (nombre, apellido y edad) y asigna estos valores a las propiedades correspondientes del objeto (nótese el uso de this).

Métodos

Los métodos son funciones asociadas con una clase que describen el comportamiento de los objetos de esa clase. Los métodos se definen dentro del cuerpo de la clase, después del constructor y sin la palabra clave function.

class Persona {
  constructor(nombre, apellido, edad) {
    this.nombre = nombre;
    this.apellido = apellido;
    this.edad = edad;
  }

  presentarse() {
    return `Hola, mi nombre es ${this.nombre} ${this.apellido} y tengo ${this.edad} años.`;
  }
}

En este caso, se ha añadido un método presentarse a la clase Persona que devuelve una cadena de texto con una presentación del objeto que lo invoca.

Objetos

Los objetos son instancias concretas de una clase. Se crean utilizando la palabra clave new seguida del nombre de la clase y, si es necesario, los argumentos que se pasan al constructor.

const persona1 = new Persona('Juan', 'Pérez', 30);

Aquí, persona1 es un objeto de la clase Persona, y sus propiedades nombre, apellido y edad han sido inicializadas con los valores 'Juan', 'Pérez' y 30, respectivamente.

Se puede acceder a las propiedades y métodos de un objeto utilizando la notación de punto: objeto.propiedad o objeto.metodo().

console.log(persona1.nombre); // Juan
console.log(persona1.presentarse()); // Hola, mi nombre es Juan Pérez y tengo 30 años.

Cabe mencionar que cada objeto creado a partir de una clase es independiente y tiene su propio conjunto de propiedades y referencias a métodos. Los cambios en un objeto no afectan a otros objetos creados a partir de la misma clase.

Campos

En JavaScript, los campos en clases son las variables o atributos propios de cada instancia de la clase. Estos campos se definen y asignan valores inicialmente dentro del método constructor de la clase y se acceden mediante la palabra clave this. Esto permite a cada objeto tener su propio conjunto de valores para dichos campos, permitiendo almacenar información específica de cada instancia. Los campos pueden ser de cualquier tipo de dato, como números, cadenas, otros objetos, etc.

Campos estáticos

La distinción entre campos estáticos y no estáticos en clases de JavaScript radica en su ámbito y pertenencia:

  • Los campos no estáticos son atributos que pertenecen a las instancias individuales de la clase. Cada instancia de la clase tiene su propia copia de estos campos y estos se definen dentro del constructor usando this.
  • Los campos estáticos, por otro lado, son atributos que pertenecen a la propia clase y no a las instancias individuales. Estos campos son compartidos entre todas las instancias de la clase y se definen directamente en la clase usando la palabra clave static.
class Persona {
  // Campo estático
  static numeroClientes = 1000;
  // Campo no estático
  nombre;

  constructor(nombre) {
    this.nombre = nombre;
  }
}

const persona1 = new Persona("Alice");
const persona2 = new Persona("Bob");

// Una variable no estática solo puede ser accedida por instancias
console.log(persona1.nombre); // "Alice"
console.log(persona2.nombre); // "Bob"
console.log(Persona.nombre); // undefined

// Una variable estática solo puede ser accedida por la propia clase
console.log(persona1.numeroClientes); // undefined
console.log(persona2.numeroClientes); // undefined
console.log(Persona.numeroClientes); // 1000

// Modificar variable no estática
persona1.nombre = "Ana";
console.log(persona1.nombre); // "Ana"
console.log(persona2.nombre); // "Bob"
// No afecta a otras instancias

// Modificar variable estática
Persona.numeroClientes = 2000;

En resumen, las clases y objetos en JavaScript son conceptos clave de la programación orientada a objetos. Las clases actúan como plantillas o moldes a partir de los cuales se crean objetos con propiedades y comportamientos similares. Los objetos son instancias concretas de una clase, que encapsulan datos (propiedades) y ofrecen funcionalidad (métodos) para manejar esos datos. Las clases en JavaScript se definen utilizando la palabra clave class, y se pueden crear objetos a partir de ellas utilizando la palabra clave new.

Aprende JavaScript GRATIS online

Ejercicios de esta lección Clases y objetos

Evalúa tus conocimientos de esta lección Clases y objetos con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Funciones flecha

JavaScript
Puzzle

Polimorfismo

JavaScript
Test

Array

JavaScript
Código

Transformación con map()

JavaScript
Test

Introducción a JavaScript

JavaScript
Test

Gestor de tareas con JavaScript

JavaScript
Proyecto

Manipulación DOM

JavaScript
Test

Funciones

JavaScript
Test

Funciones flecha

JavaScript
Código

Async / Await

JavaScript
Código

Creación y uso de variables

JavaScript
Test

Excepciones

JavaScript
Puzzle

Promises

JavaScript
Código

Funciones cierre (closure)

JavaScript
Test

Herencia

JavaScript
Puzzle

Herencia

JavaScript
Test

Estructuras de control

JavaScript
Código

Selección de elementos DOM

JavaScript
Test

Modificación de elementos DOM

JavaScript
Test

Filtrado con filter() y find()

JavaScript
Test

Funciones cierre (closure)

JavaScript
Puzzle

Funciones

JavaScript
Puzzle

Mapas con Map

JavaScript
Test

Reducción con reduce()

JavaScript
Test

Callbacks

JavaScript
Puzzle

Manipulación DOM

JavaScript
Puzzle

Promises

JavaScript
Test

Async / Await

JavaScript
Test

Eventos del DOM

JavaScript
Puzzle

Async / Await

JavaScript
Puzzle

Promises

JavaScript
Puzzle

Filtrado con filter() y find()

JavaScript
Código

Callbacks

JavaScript
Test

Creación de clases y objetos Restaurante

JavaScript
Código

Reducción con reduce()

JavaScript
Código

Filtrado con filter() y find()

JavaScript
Puzzle

Reducción con reduce()

JavaScript
Puzzle

Conjuntos con Set

JavaScript
Puzzle

Herencia de clases

JavaScript
Código

Eventos del DOM

JavaScript
Test

Clases y objetos

JavaScript
Puzzle

Modificación de elementos DOM

JavaScript
Puzzle

Mapas con Map

JavaScript
Puzzle

Funciones

JavaScript
Código

Tipos de datos

JavaScript
Test

Clases y objetos

JavaScript
Test

Array

JavaScript
Test

Conjuntos con Set

JavaScript
Test

Array

JavaScript
Puzzle

Encapsulación

JavaScript
Puzzle

Clases y objetos

JavaScript
Código

Uso de operadores

JavaScript
Puzzle

Uso de operadores

JavaScript
Test

Estructuras de control

JavaScript
Test

Excepciones

JavaScript
Test

Transformación con map()

JavaScript
Puzzle

Funciones flecha

JavaScript
Test

Selección de elementos DOM

JavaScript
Puzzle

Encapsulación

JavaScript
Test

Mapas con Map

JavaScript
Código

Creación y uso de variables

JavaScript
Puzzle

Polimorfismo

JavaScript
Puzzle

Tipos de datos

JavaScript
Puzzle

Estructuras de control

JavaScript
Puzzle

Todas las lecciones de JavaScript

Accede a todas las lecciones de JavaScript y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Accede GRATIS a JavaScript y certifícate

Certificados de superación de JavaScript

Supera todos los ejercicios de programación del curso de JavaScript y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

  1. Comprender el concepto de clases y objetos en JavaScript.
  2. Conocer la sintaxis para declarar una clase utilizando la palabra clave class.
  3. Aprender a definir un constructor dentro de una clase para inicializar propiedades del objeto.
  4. Entender cómo se definen los métodos dentro de una clase y cómo se invocan desde los objetos.
  5. Saber cómo crear objetos a partir de una clase utilizando la palabra clave new.
  6. Comprender la diferencia entre campos estáticos y no estáticos en las clases.
  7. Conocer la importancia de encapsulación en la programación orientada a objetos.
  8. Aprender a acceder a las propiedades y métodos de un objeto utilizando la notación de punto.
  9. Saber cómo cada objeto creado a partir de una clase es independiente y tiene su propio conjunto de propiedades y métodos.
  10. Comprender cómo los objetos permiten organizar el código de manera estructurada y modular en la programación.