Construtores de Objetos JavaScript

Exemplo

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

Experimente você mesmo

O hábito de nomear o construtor com letras maiúsculas é uma boa prática.

tipo de objeto (esquema) (classe)

O exemplo do capítulo anterior é limitado. Eles apenas criam um único objeto.

Às vezes precisamos criar muitos objetos do mesmo "esquema”.

Um método para criar um "tipo de objeto" é usarfunção construtora do objeto

No exemplo acima,função Pessoa() é a função construtora do objeto.

através de new A chamada da palavra-chave de construtor pode criar objetos do mesmo tipo:

var meuPai = new Pessoa("Bill", "Gates", 62, "azul");
var minhaMãe = new Pessoa("Steve", "Jobs", 56, "verde");

Experimente você mesmo

this palavra-chave

No JavaScript, chamado this o que possui coisas é o código.

this no uso, é o próprio objeto.

No construtor de função,this É um valor nulo. É o substituto do novo objeto. Quando um novo objeto é criado, o valor de this se torna esse novo objeto.

Atenção this Não é uma variável. É uma palavra-chave. Você não pode mudar o valor de this.

Adicionar atributos ao objeto

Adicionar novos atributos a um objeto existente é simples:

Exemplo

myFather.nationality = "English";

Experimente você mesmo

O novo atributo foi adicionado a myFather. Não a myMother, nem a qualquer outro objeto person.

Adicionar métodos ao objeto

Adicionar novos métodos a um objeto existente é simples:

Exemplo

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

Experimente você mesmo

O novo método foi adicionado a myFather. Não a myMother, nem a qualquer outro objeto person.

Adicionar atributos ao construtor

Diferente de adicionar novos atributos a um objeto existente, você não pode adicionar novos atributos a um construtor de objeto:

Exemplo

Person.nationality = "English";

Experimente você mesmo

Para adicionar um novo atributo ao construtor, você deve adicioná-lo à 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";
}

Experimente você mesmo

Desta forma, as propriedades do objeto podem ter valores padrão.

Adicionar métodos ao construtor

Seu construtor de função 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;};
}

Experimente você mesmo

Diferente de adicionar novos métodos a um objeto existente, você não pode adicionar novos métodos a um construtor de objeto.

É necessário adicionar métodos a um objeto dentro da função construtora:

Exemplo

function Person(firstName, lastName, age, eyeColor) {
    this.firstName = firstName;  
    this.lastName = lastName;
    this.age = age;
    this.eyeColor = eyeColor;
    this.changeName = function (name) {
        this.lastName = name;
    };
}

A função changeName() atribui o valor de name ao atributo lastName da pessoa.

Agora você pode tentar:

myMother.changeName("Jobs");

Experimente você mesmo

usando myMother Substitua por this,O JavaScript pode saber qual pessoa está sendo tratada atualmente.

Construtores de JavaScript internos

O JavaScript oferece construtores para objetos primitivos:

Exemplo

var x1 = new Object();    // Um novo objeto Object
var x2 = new String();    // Um novo objeto String
var x3 = new Number();    // Um novo objeto Number
var x4 = new Boolean();   // Um novo objeto Boolean
var x5 = new Array();     // Um novo objeto Array
var x6 = new RegExp();    // Um novo objeto RegExp
var x7 = new Function();  // Um novo objeto Function
var x8 = new Date();      // Um novo objeto Date

Experimente você mesmo

Math() Objetos não estão nessa lista. Math é um objeto global.new Palavras-chave não podem ser usadas no Math.

Você sabia?

Como visto acima, o JavaScript oferece versões de objetos de tipos de dados primitivos (string, número e booleano). Mas não há motivo para criar objetos complexos. Os valores primitivos são muito mais rápidos!

Use a literal de objeto {} Substitua por new Object()

Use a literal de string "" Substitua por new String()

Use a literal numérica em vez de Number()

Use a literal booleana em vez de new Boolean()

Use a literal de array [] Substitua por new Array()

Use a literal de padrão em vez de new RegExp()

Use a expressão de função () {} Substitua por new Function()

Exemplo

var x1 = {};            // Novo objeto
var x2 = "";            // Nova string original
var x3 = 0;             // Novo valor numérico original
var x4 = false;         // Novo valor lógico original
var x5 = [];            // Novo objeto array
var x6 = /()/           // Novo objeto expressão regular
var x7 = function(){};  // Novo objeto função

Experimente você mesmo

Objeto String

Normalmente, strings são criadas como valores primitivos: var firstName = "Bill"

Mas também pode usar new Palavra-chave para criar objeto string: var firstName = new String("Bill")

Por favor, em Cadeias JSNesta seção, aprenda por que não deve criar strings como objetos.

Objeto Número

Normalmente, números são criados como valores primitivos: var x = 456

Mas também pode usar new Palavra-chave para criar objeto número: var x = new Number(456)

Por favor, em Números JSNesta seção, aprenda por que não deve criar números como objetos.

Objeto Booleano

Normalmente, valores lógicos são criados como valores primitivos: var x = false

Mas também pode usar new Palavra-chave para criar objeto lógico: var x = new Boolean(false)

Por favor, em Lógica JSNesta seção, aprenda por que não deve criar valores lógicos como objetos.