tutoriais mais recente desenvolvimento web
 

JavaScript Protótipos de objetos


Cada objeto JavaScript tem um protótipo. O protótipo é também um objeto.

Todos os objetos JavaScript herdam suas propriedades e métodos do seu protótipo.


Protótipos de JavaScript

Todos os objetos JavaScript herdar as propriedades e métodos de seu protótipo.

Objetos criados usando um objeto literal ou com new Object() , herdar de um protótipo chamado Object.prototype.

Objetos criados com new Date() herdar o Date.prototype.

O Object.prototype está no topo da cadeia de protótipos.

Todos os objetos JavaScript (Date, Array, RegExp, Function, ....) herdam da Object.prototype .


Criação de um protótipo

A forma padrão para criar um protótipo de objeto é a utilização de uma função de objeto construtor:

Exemplo

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

Com uma função de construtor, você pode usar a new palavra-chave para criar novos objetos a partir do mesmo protótipo:

Exemplo

var myFather = new Person("John", "Doe", 50, "blue");
var myMother = new Person("Sally", "Rally", 48, "green");
Tente você mesmo "

A função de construtor é o protótipo para Person objetos.
É considerada boa prática para a função nome do construtor com uma primeira letra maiúscula.


Adicionando propriedades e métodos para objetos

Às vezes você quer adicionar novas propriedades (ou métodos) a um objeto existente.

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

Às vezes você quer adicionar novas propriedades (ou métodos) com um modelo de objeto.


Adicionando uma propriedade para um objeto

Adicionando uma nova propriedade para um objeto existente é fácil:

Exemplo

myFather.nationality = "English";
Tente você mesmo "

A propriedade será adicionado ao myFather . Não myMother . Não a quaisquer outros objetos pessoa.


Adicionando um método para um objecto

Adicionando um novo método para um objeto existente também é fácil:

Exemplo

myFather.name = function () {
    return this.firstName + " " + this.lastName;
};
Tente você mesmo "

O método vai ser adicionado ao myFather . Não myMother .


Adicionando propriedades a uma Prototype

Você não pode adicionar uma nova propriedade para um protótipo da mesma maneira que você adicionar uma nova propriedade a um objeto existente, porque o protótipo não é um objeto existente.

Exemplo

Person.nationality = "English";
Tente você mesmo "

Para adicionar uma nova propriedade para um construtor, você deve adicioná-lo à função de construtor:

Exemplo

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

propriedades de protótipo podem ter valores de protótipo (valores padrão).


Adicionando métodos a um protótipo

Sua função de construtor também pode definir métodos:

Exemplo

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
    this.name = function() {return this.firstName + " " + this.lastName;};
}
Tente você mesmo "

Usando o prototype Propriedade

O JavaScript prototype propriedade permite adicionar novas propriedades a um protótipo existente:

Exemplo

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

A propriedade protótipo JavaScript também permite adicionar novos métodos para um protótipo existente:

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;
};
Tente você mesmo "

Apenas modificar seus próprios protótipos. Nunca modifique os protótipos de objetos JavaScript padrão.