Funciones constructoras
Parte de la sección Programación Orientada a Objetos del Journey de JavaScript de Coddy. Lección 4 de 56.
Las funciones constructoras son funciones especiales en JavaScript que te permiten crear varios objetos con la misma estructura y comportamiento.
Define una función constructora para una Persona:
function Person(name, age) {
this.name = name;
this.age = age;
this.greet = function() {
return "Hello, my name is " + this.name;
};
}Crea un nuevo objeto Person usando el constructor:
const john = new Person("John", 30);
const tyler = new Person("Tyler", 35);Llama a un constructor con la palabra clave new. new crea un objeto vacío, ejecuta la función con this apuntando a ese objeto y devuelve el objeto, así que this.name = name almacena el nombre en john. Por convención, los nombres de los constructores empiezan con una letra mayúscula (Person, Car) para indicar que están pensados para llamarse con new.
Sin new, Person("John", 30) es una llamada a una función ordinaria: no se crea ningún objeto, this es el objeto global (o undefined en modo estricto) y la llamada devuelve undefined.
Después de ejecutar el código anterior, john es un objeto con propiedades:
// el objeto john contiene:
{
name: "John",
age: 30,
greet: function() { return "Hello, my name is John"; }
}Accede a las propiedades y llama a los métodos:
console.log(john.name); // Muestra: John
console.log(john.greet()); // Muestra: Hello, my name is JohnDesafío
- Crea una función constructora llamada
Bookque reciba tres argumentos:
title(Cadena)author(Cadena)pages(Número)
La función debe establecerlos como propiedades del objeto creado.
2. Añade un método llamado getSummary que devuelva una cadena con información sobre el libro: this.title + " was written by " + this.author + " and has " + this.pages + " pages";
Pruébalo tú mismo
// TODO: Crea una función constructora llamada Book que reciba tres argumentos (title, author, pages)
// TODO: Establece estos valores como propiedades del objeto creado
// TODO: Añade un método llamado getSummary que devuelva una cadena con información sobre el libro.
// Por ejemplo: Harry Potter was written by Rowling and has 500 pages
// No modifiques el código de abajo
const inputTitle = inp[0]; // Primera línea: título del libro
const inputAuthor = inp[1]; // Segunda línea: autor
const inputPages = parseInt(inp[2]);// Tercera línea: número de páginas
const book = new Book(inputTitle, inputAuthor, inputPages);
console.log(book.getSummary());Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Programación Orientada a Objetos
1Objetos y la palabra clave this
Repaso rápido: ObjetosAgregar métodos a los objetosEntendiendo la palabra clave thisFunciones constructorasLa palabra clave newDesafío de repaso7Herencia y la palabra clave extends
HerenciaLa relación "es-un"La palabra clave extendsEl método super()Heredar propiedades y métodosDesafío de repaso13Composición vs. Herencia
La relación "tiene-un" vs. "es-un"Los límites de la herencia profundaConstrucción de objetos2Organización del código
¿Qué son los módulos?Exportar con exportImportar con importExportaciones por defecto vs. nombradas5Encapsulamiento y Acceso
EncapsulamientoCampos de clase públicos y privadosMétodos privadosDesafío de repaso8Organización del código OOP
Organizar clases en módulos11Proyecto: Un renderizador de figuras
Configuración: Clase Figura y exportaciónHerencia de la clase CírculoSobrescritura y método de áreaContador de figuras estático14Sistema de Gestión de Biblioteca
Diseño de la BibliotecaClase Libro con ComposiciónValidación del Autor del Libro9Métodos y propiedades estáticos
Nivel de clase vs. Nivel de instanciaPropiedades estáticasMétodos de utilidad estáticosDesafío de repasoPractica por tu cuenta: Compilador de JavaScript online