Menu
CoddyTech

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 John
challenge icon

Desafío

  1. Crea una función constructora llamada Book que 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());
quiz iconPonte a prueba

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

Practica por tu cuenta: Compilador de JavaScript online