Prototipos de objetos de JavaScript
Todos los objetos JavaScript heredan propiedades y métodos de un prototipo.
En el capítulo anterior aprendimos cómo usar un constructor de objetos :
Ejemplo
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");
También aprendimos que no puede agregar una nueva propiedad a un constructor de objetos existente:
Ejemplo
Person.nationality = "English";
Para agregar una nueva propiedad a un constructor, debe agregarla a la función del constructor:
Ejemplo
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.nationality = "English";
}
Herencia de prototipos
Todos los objetos JavaScript heredan propiedades y métodos de un prototipo:
Date
los objetos heredan deDate.prototype
Array
los objetos heredan deArray.prototype
Person
los objetos heredan dePerson.prototype
El Object.prototype
está en la parte superior de la cadena de herencia del prototipo:
Date
objetos, Array
objetos y Person
objetos heredan de Object.prototype
.
Adición de propiedades y métodos a objetos
A veces desea agregar nuevas propiedades (o métodos) a todos los objetos existentes de un tipo determinado.
A veces desea agregar nuevas propiedades (o métodos) a un constructor de objetos.
Usando la propiedad prototipo
La propiedad de JavaScript prototype
le permite agregar nuevas propiedades a los constructores de objetos:
Ejemplo
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.nationality = "English";
La propiedad de JavaScript prototype
también le permite agregar nuevos métodos a los constructores de objetos:
Ejemplo
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.name = function() {
return this.firstName + " " + this.lastName;
};
Solo modifica tus propios prototipos. Nunca modifique los prototipos de objetos estándar de JavaScript.