Protótipos de Objetos do JavaScript

Todos os objetos JavaScript herdam propriedades e métodos dos protótipos.

No capítulo anterior, aprendemos como usarConstrutor de objetos:

Instância

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
}
var myFather = new Person("Bill", "Gates", 62, "blue");
var myMother = new Person("Steve", "Jobs", 56, "green");

Experimente pessoalmente

Nós já reconhecemos que vocêNão é possívelAdicionar novas propriedades ao construtor de objetos existentes:

Instância

Person.nationality = "English";

Experimente pessoalmente

Para adicionar uma nova propriedade a um construtor, é necessário adicioná-la à função construtora:

Instância

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
    this.nationality = "English";
}

Experimente pessoalmente

Herança de protótipos

Todos os objetos JavaScript herdam propriedades e métodos dos protótipos.

Os objetos Date herdam de Date.prototype. Os objetos Array herdam de Array.prototype. O objeto Person herda de Person.prototype.

Object.prototype está na parte superior da cadeia de herança de protótipos:

Os objetos Date, Array e Person herdam de Object.prototype.

Adicionar propriedades e métodos a objetos

Às vezes, você deseja adicionar novas propriedades (ou métodos) a todos os objetos existentes de um tipo dado.

Às vezes, você deseja adicionar novos atributos (ou métodos) ao construtor de objetos.

Uso prototype Atributo

A propriedade prototype do JavaScript permite que você adicione novos atributos ao construtor de objetos:

Instância

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
}
Person.prototype.nationality = "English";

Experimente pessoalmente

A propriedade prototype do JavaScript também permite que você adicione novos métodos ao construtor de objetos:

Instância

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;
};

Experimente pessoalmente

Por favor, modifique apenasSeu própriodo原型。Nunca modifique o原型 de objetos JavaScript padrão.