Protótipos de objetos JavaScript
Todos os objetos JavaScript herdam propriedades e métodos de um protótipo.
No capítulo anterior, aprendemos como usar um construtor de objetos :
Exemplo
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");
Também aprendemos que você não pode adicionar uma nova propriedade a um construtor de objeto existente:
Exemplo
Person.nationality = "English";
Para adicionar uma nova propriedade a um construtor, você deve adicioná-la à função construtora:
Exemplo
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.nationality = "English";
}
Herança de protótipo
Todos os objetos JavaScript herdam propriedades e métodos de um protótipo:
Date
objetos herdam deDate.prototype
Array
objetos herdam deArray.prototype
Person
objetos herdam dePerson.prototype
O Object.prototype
está no topo da cadeia de herança do protótipo:
Date
objetos, Array
objetos e Person
objetos herdam de Object.prototype
.
Adicionando Propriedades e Métodos a Objetos
Às vezes, você deseja adicionar novas propriedades (ou métodos) a todos os objetos existentes de um determinado tipo.
Às vezes, você deseja adicionar novas propriedades (ou métodos) a um construtor de objeto.
Usando a propriedade protótipo
A propriedade JavaScript prototype
permite adicionar novas propriedades aos construtores de objetos:
Exemplo
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.nationality = "English";
A propriedade JavaScript prototype
também permite adicionar novos métodos aos construtores de objetos:
Exemplo
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;
};
Modifique apenas seus próprios protótipos. Nunca modifique os protótipos de objetos JavaScript padrão.