1. ¿Qué es un constructor?
Los constructores son muy comunes en algunos idiomas orientados a objetos como Java, C ++ y PHP. En JavaScript, el constructor es primero una función normal, que se puede llamar usando el nuevo operador y genera un objeto de tipo especial.
La copia del código es la siguiente:
// "Benjamin" es un constructor
var benjamin = new Benjamin ("Zuojj", "masculino");
En el ejemplo anterior, Benjamin es un objeto Benjamin, entonces, ¿cómo se instancia?
La copia del código es la siguiente:
función benjamin (nombre de usuario, sexo) {
this.Username = UserName;
this.sex = sexo;
}
var benjamin = new Benjamin ("Zuojj", "masculino");
// salidas: benjamin {sexo: "masculino", nombre de usuario: "zuoj"}
console.log (Benjamin);
Como podemos ver, el constructor "Benjamin" simplemente recibe parámetros pasados y los asigna a este objeto. Esto se debe a que cuando el nuevo operador llama al constructor, el constructor este objeto se asigna al objeto devuelto por la nueva operación.
Esto significa que el código anterior es equivalente a:
La copia del código es la siguiente:
benjamin = {
"Nombre de usuario": "Zuojj",
"Sexo": "Hombre"
}
2. ¿Por qué usar constructores
Hay varias razones por las cuales se usan constructores:
1. Usar constructores significa que todos estos objetos se pueden crear utilizando la misma estructura básica.
2. Usar un constructor significa que el objeto "benjamin" está explícitamente marcado como una instancia de la función "benjamin"
La copia del código es la siguiente:
función benjamin (nombre de usuario, sexo) {
this.Username = UserName;
this.sex = sexo;
}
var benjamin = new Benjamin ("Zuojj", "masculino");
var ben = {
"Nombre de usuario": "Zuojj",
"Sexo": "Hombre"
}
// salidas: verdadero
console.log (instancia de Benjamin de Benjamin);
// salidas: falsas
console.log (ben instancia de benjamin);
3. Usar constructores significa que podemos definir métodos públicos en el prototipo para compartir múltiples instancias
La copia del código es la siguiente:
función benjamin (nombre de usuario, sexo) {
this.Username = UserName;
this.sex = sexo;
}
Benjamin.prototype.getName = function () {
devolver esto.username;
}
var benjamin = new Benjamin ("Zuojj", "masculino");
var ben = nuevo benjamin ("limón", "mujer");
// salidas: zuoJJ
console.log (benjamin.getName ());
// salidas: limón
console.log (ben.getName ());
3. cosas a tener en cuenta
1. Nuevas palabras clave
Al instanciar el constructor, no debe olvidar usar la nueva palabra clave. Si usar la nueva palabra clave tendrá un gran impacto en este objeto. Sin la nueva palabra clave, este objeto apuntará al objeto global (ventana en el navegador y global en el nodo). Por lo tanto, al definir un constructor, se recomienda capitalizar la primera letra del nombre de la función.
2. Si la función llamada no tiene una expresión de retorno explícita, este objeto se devolverá implícitamente, que es el objeto recién creado. De lo contrario, el resultado se verá afectado, pero solo si el objeto devuelto es
La copia del código es la siguiente:
Function Bar () {
regresar 2;
}
bar bar = nueva bar ();
// Devuelve el objeto recién creado
// salidas: bar {}
console.log (bar);
función test () {
this.value = 2;
devolver {
Foo: 1
};
}
Var test = new test ();
// Objeto devuelto
// salidas: objeto {foo: 1}
console.log (prueba);
A lo que debemos prestar atención es:
a) nueva barra () devuelve el objeto recién creado, no el valor literal del número 2. Por lo tanto, la nueva barra (). constructor === bar, pero si el objeto número devuelto, el resultado será diferente;
b) La nueva prueba () obtenida aquí es un objeto devuelto por la función, no un objeto recién creado a través de la nueva palabra clave, como se muestra a continuación:
La copia del código es la siguiente:
Function Bar () {
regresar 2;
}
bar bar = nueva bar ();
function Barn () {
devolver nuevo número (2);
}
var barn = new Barn ();
// salidas: verdadero
console.log (bar.constructor === bar);
// salidas: número {}
console.log (granero);
// OUPUTS: FALSO
console.log (barn.constructor === granero);
// salidas: verdadero
console.log (barn.constructor === número);
/ * -------------------------------------- */
función test () {
this.value = 2;
devolver {
Foo: 1
};
}
Var test = new test ();
// salidas: indefinido
console.log (test.value);
// OUPUTS: 1
console.log (test.foo);
Lo anterior es un resumen del constructor. Espero que sea útil para principiantes. Si hay puntos inapropiados en el artículo, espero criticarlos y corregirlos.