Este artículo describe los métodos de implementación de clases e instancias en JavaScript. Compártelo para su referencia. Los detalles son los siguientes:
No existe un concepto de clase principal, clase infantil o clase o instancia en JavaScript. Todo depende de la cadena prototipo para lograr la herencia. Al buscar las propiedades de un objeto, JavaScript atravesará la cadena prototipo hacia arriba hasta que se encuentren las propiedades correspondientes. Existen varios métodos que pueden hacer que JavaScript simule los conceptos de clase e instancia.
1. Use el constructor directamente para crear un objeto y use esto para consultar la instancia del objeto dentro del constructor.
Copie el código de la siguiente manera: function animal () {
this.name = "animal";
}
Animal.prototype.makesound = function () {
console.log ("sonido animal");
}
[Función]
var animal1 = new Animal ();
animal1.name;
'animal'
animal1.makesound ();
sonido animal
Veamos otro ejemplo:
Copie el código de la siguiente manera: punto de función (x, y) {
this.x = x;
this.y = y;
}
Point.prototype = {
método1: function () {console.log ("método1"); },
método2: function () {console.log ("método2"); },
}
{Method1: [function], Method2: [function]}
VAR Point1 = nuevo punto (10, 20);
punto1.method1 ();
Método1
punto1.method2 ();
método2
Como se indicó anteriormente, primero especifique el atributo prototipo de un objeto de constructor. Luego, una nueva instancia del objeto, puede llamar al método especificado en el prototipo.
2. Use el método Object.Create () para crear un objeto
Copie el código de la siguiente manera: var animal = {
Nombre: "Animal",
kekeound: function () {console.log ("sonido animal"); },
}
var animal2 = object.create (animal);
animal2.name;
'animal'
console.log (animal2.name);
animal
animal2.makesound ();
sonido animal
Este método es más simple que el método del constructor, pero no puede implementar atributos privados y métodos privados, y los datos no pueden compartirse entre los objetos de instancia, por lo que la simulación de clase aún no es lo suficientemente integral.
3. Enfoque minimalista propuesto por el programador holandés Gabor de Mooij. Uso recomendado.
Copie el código de la siguiente manera: var animal = {
init: function () {
var animal = {};
animal.name = "animal";
animal.makesound = function () {console.log ("sonido animal"); };
animal de regreso;
}
};
var animal3 = animal.init ();
animal3.name;
'animal'
animal3.Makesound ();
sonido animal
Sin usar prototipo y esto, solo necesita personalizar un init de constructor. La implementación hereditaria también es muy simple.
Copie el código de la siguiente manera: var cat = {
init: function () {
var cat = animal.init ();
cat.name2 = "cat";
cat.makesound = function () {console.log ("sonido de gato"); };
cat.sleep = function () {console.log ("Sleep de gatos"); };
gato de regreso;
}
}
var cat = cat.init ();
Cat.name; // 'animal'
Cat.name2; // 'gato'
Cat.Makesound (); // Similar a la sobrecarga de métodos
sonido de gato
cat.sleep ();
Duerme del gato
Uso de propiedades privadas y métodos privados:
Copie el código de la siguiente manera: var animal = {
init: function () {
var animal = {};
var sonido = "sonido animal privado"; // atributos privados
animal.makesound = function () {console.log (sonido); };
animal de regreso;
}
};
var animal4 = animal.init ();
Animal.Sound; // Los atributos privados indefinidos solo se pueden leer a través de los propios métodos del objeto.
animal.Sound; // Los atributos privados indefinidos solo se pueden leer a través del método propio del objeto.
animal4.Makesound ();
sonido animal privado
Mientras las propiedades y métodos no definidos en los objetos animales sean privados, el mundo exterior no las puede acceder.
El intercambio de datos se puede lograr entre clases e instancias.
Copie el código de la siguiente manera: var animal = {
sonido: "sonido animal común",
init: function () {
var animal = {};
animal.commonsound = function () {console.log (animal.Sound); };
animal.changesound = function () {animal.Sound = "El sonido animal común cambiado"; };
animal de regreso;
}
}
var animal5 = animal.init ();
var animal6 = animal.init ();
Animal.Sound; // puede considerarse como un atributo de clase
'sonido animal común'
animal5.Sound; // El objeto de instancia no puede acceder a los atributos de clase
indefinido
Animal6.Sound;
indefinido
animal5.commonsound ();
sonido animal común
animal6.commonsound ();
sonido animal común
animal5.changesound (); // modificar las propiedades de la clase
indefinido
Animal.Sound;
'sonido animal común'
animal5.commonsound ();
sonido animal común
animal6.commonsound ();
sonido animal común
Por ejemplo, Animal.Sound son los atributos compartidos de clases e instancias, que pueden considerarse como atributos de clase y métodos de clase.
Si una instancia cambia el atributo común, los atributos comunes de la clase y otras instancias también se modifican en consecuencia.
En resumen, es el concepto y el uso de la clase e instancia simulada en JavaScript.
Espero que este artículo sea útil para la programación de JavaScript de todos.