Existe un principio famoso para la reutilización del código, que fue propuesta por GOF: la prioridad se usa para usar combinaciones de objetos en lugar de herencia de clase. En JavaScript, no hay concepto de clases, por lo que la reutilización de código no se limita a la herencia de clase. Hay muchas formas de crear objetos en JavaScript, incluidos los constructores, puede usar nuevos para crear objetos y puede modificar dinámicamente objetos. También hay muchos métodos para reutilizar la herencia no clasificada (que puede llamarse modo de herencia moderno) en JavaScript, como combinar otros objetos en objetos requeridos, tecnología de mezcla de objetos, tomar prestados y reutilizar los métodos requeridos.
Modo de herencia clásica en modo defensor
Ejemplos de dos constructores padre e hijo:
La copia del código es la siguiente:
función parent (nombre) {
this.name = nombre || "Adam";
}
Parent.prototype.say = {
devolver esto.name;
};
function child (nombre) {
}
heredar (niño, padre);
El siguiente es un método de implementación de la función reutilizable heredar ():
La copia del código es la siguiente:
función heredar (c, p) {
C.prototype = new P ();
}
Aquí la propiedad prototipo debe apuntar a un objeto, no una función, por lo que debe apuntar a una instancia creada por el constructor principal, no al constructor en sí.
Después de esto, al crear un objeto infantil, obtendrá sus funciones de la instancia principal a través del prototipo:
La copia del código es la siguiente:
var kid = new Child ();
kid.say (); // "Adam"
Llame a la cadena de prototipo heredado:
Agregue aún más las propiedades del niño:
La copia del código es la siguiente:
var kid = new Child ();
kid.name = "Patrick";
kid.say (); // "Patrick"
Cambios en la cadena de prototipos:
Puede encontrar el nombre en las propiedades de su objeto, para que ya no tenga que buscar la cadena prototipo.
Una de las desventajas de usar el patrón anterior es que hereda las propiedades de dos objetos al mismo tiempo, a saber, las propiedades agregadas a esto y las propiedades del prototipo. La mayoría de las veces, estos atributos de uno mismo no son necesarios.
Otra desventaja es que usar heredero () heredar () heredero no admite los parámetros de pasar a subconstructores, por ejemplo:
La copia del código es la siguiente:
var s = nuevo niño ("seth");
S.Say (); // "Adán"
No se espera este resultado. Aunque el constructor infantil puede pasar los parámetros al constructor principal, este mecanismo de herencia debe ser reecuperado cada vez que se necesite un objeto infantil, y es ineficiente porque el objeto principal eventualmente se recreará.
Este artículo termina aquí. Continuaremos actualizando los modos restantes del modo de reutilización del código JavaScript en el futuro.