1. O que é um construtor
Os construtores são muito comuns em alguns idiomas orientados a objetos, como Java, C ++ e PHP. No JavaScript, o construtor é primeiro uma função normal, que pode ser chamada usando o novo operador e gera um objeto de tipo especial.
A cópia do código é a seguinte:
// "Benjamin" é um construtor
var Benjamin = New Benjamin ("Zuojj", "Masculino");
No exemplo acima, Benjamin é um objeto de Benjamin, então como ele instancia?
A cópia do código é a seguinte:
função benjamin (nome de usuário, sexo) {
this.UserName = Nome de usuário;
this.sex = sexo;
}
var Benjamin = New Benjamin ("Zuojj", "Masculino");
// saídas: Benjamin {Sex: "masculino", nome de usuário: "Zuojj"}
console.log (Benjamin);
Como podemos ver, o construtor "Benjamin" simplesmente recebe parâmetros passados e os atribui a esse objeto. Isso ocorre porque quando o construtor é chamado pelo novo operador, o objeto do construtor é atribuído ao objeto retornado pela nova operação.
Isso significa que o código acima é equivalente a:
A cópia do código é a seguinte:
Benjamin = {
"Nome de usuário": "Zuojj",
"sexo": "masculino"
}
2. Por que usar construtores
Existem várias razões pelas quais os construtores são usados:
1. Usar construtores significa que todos esses objetos podem ser criados usando a mesma estrutura básica.
2. Usar um construtor significa que o objeto "Benjamin" é explicitamente marcado como uma instância da função "Benjamin"
A cópia do código é a seguinte:
função benjamin (nome de usuário, sexo) {
this.UserName = Nome de usuário;
this.sex = sexo;
}
var Benjamin = New Benjamin ("Zuojj", "Masculino");
var Ben = {
"Nome de usuário": "Zuojj",
"sexo": "masculino"
}
// saídas: true
console.log (Benjamin Instância de Benjamin);
// saídas: false
console.log (Ben Instância de Benjamin);
3. Usar construtores significa que podemos definir métodos públicos no protótipo para compartilhar várias instâncias
A cópia do código é a seguinte:
função benjamin (nome de usuário, sexo) {
this.UserName = Nome de usuário;
this.sex = sexo;
}
Benjamin.prototype.getName = function () {
devolver este.username;
}
var Benjamin = New Benjamin ("Zuojj", "Masculino");
var Ben = New Benjamin ("Lemon", "Feminino");
// saídas: zuojj
console.log (benjamin.getName ());
// saídas: limão
console.log (ben.getName ());
3. Coisas para observar
1.Now palavras -chave
Ao instantar o construtor, você não deve esquecer de usar a nova palavra -chave. Seja usar a nova palavra -chave terá um grande impacto nesse objeto. Sem a nova palavra -chave, esse objeto apontará para o objeto global (janela no navegador e global no nó). Portanto, ao definir um construtor, é recomendável que a primeira letra do nome da função seja capitalizada.
2. Se a função chamada não tiver uma expressão de retorno explícita, esse objeto será retornado implicitamente, que é o objeto recém -criado. Caso contrário, o resultado será afetado, mas apenas se o objeto retornado for
A cópia do código é a seguinte:
barra de função () {
retornar 2;
}
var bar = new bar ();
// retorna o objeto recém -criado
// saídas: bar {}
console.log (bar);
function test () {
this.value = 2;
retornar {
Foo: 1
};
}
var test = new test ();
// objeto retornado
// saídas: objeto {foo: 1}
console.log (teste);
O que precisamos prestar atenção é:
a) New Bar () retorna o objeto recém -criado, não o valor literal do número 2. Portanto, New Bar (). Construtor === Bar, mas se o objeto número retornado, o resultado será diferente;
b) O novo teste () obtido aqui é um objeto retornado pela função, não um objeto recém -criado através da nova palavra -chave, como mostrado abaixo:
A cópia do código é a seguinte:
barra de função () {
retornar 2;
}
var bar = new bar ();
function Barn () {
retornar novo número (2);
}
var celeiro = novo celeiro ();
// saídas: true
console.log (bar.constructor === bar);
// saídas: número {}
console.log (celeiro);
// OPUTS: false
console.log (Barn.Constructor === Barn);
// saídas: true
console.log (Barn.Constructor === Número);
/ * -------------------------------------- */
function test () {
this.value = 2;
retornar {
Foo: 1
};
}
var test = new test ();
// saídas: indefinido
console.log (test.value);
// OPUTS: 1
console.log (test.foo);
O acima é um resumo do construtor. Espero que seja útil para iniciantes. Se houver algum ponto inadequado no artigo, espero criticá -los e corrigi -los.