Primero, veamos la herencia no convencional One: Método de herencia de instancia.
No digo tantas tonterías. Dado que es heredado por no convencional, no debe usarse con frecuencia. Dado que no se usa con frecuencia y todavía existe, solo hay un factor que se usa en ocasiones específicas. El método de herencia de instancia se usa principalmente para la herencia de los objetos centrales, y también es la única forma de resolver la herencia de los objetos centrales hasta ahora.
La herencia de los objetos centrales tiene cierto valor. Por ejemplo, el objeto de error. Es posible que nuestra empresa tenga que implementar una clase de error para simplificar el desarrollo futuro. En este momento, tengo que usar el método de herencia de instancia para heredar el error.
El código es el siguiente:
La copia del código es la siguiente:
Función ExtendingError (MES)
{
Var instancia = nuevo error (mes);
instance.newerror = function () {
alerta ("Su error es"+mes);
}
instancia de retorno;
}
Ok, pruebalo:
La copia del código es la siguiente:
var e = new ExtendingError ("Su número es menor que uno");
E.Newerror ();
alerta (e.ToString ());
Los resultados nos satisfacen:
Ok, sin decir muchas tonterías, este es un método de herencia no convencional, que básicamente solo se usa para la herencia de los objetos centrales, ¡solo recuerda!
A continuación, echemos un vistazo a la segunda herencia no principal: el método de herencia de copia.
Como su nombre indica, la herencia de copia significa la herencia de los objetos a través de la copia. ¿Qué debo copiar? Es obvio que son las propiedades y métodos del objeto. ¿Todavía recuerdas que en JavaScript, la clase es en realidad un hashtable? Si no puede recordar, regrese y revise los conceptos básicos. Puedo escribir un artículo sobre los objetos de JavaScript en un tiempo.
Será más fácil entender esto, solo mire el código:
Primero escriba un método de extensión:
La copia del código es la siguiente:
Function.prototype.extend = function () {
para (var pro en obj)
{
// Esta es en realidad una copia completa de las propiedades y métodos de la clase principal
this.prototype [pro] = obj [pro];
}
}
Ok, escriba un código para ver cómo usarlo:
La copia del código es la siguiente:
función animal ()
{}
function People ()
{}
People.extend (nuevo animal ())
{}
Una persona exigente puede ver de un vistazo que las desventajas de este método son demasiado obvias:
Al copiar los métodos de atributo de un objeto uno por uno, la reflexión realmente se usa. No diré mucho sobre el daño a la eficiencia de la reflexión.
Al igual que la herencia prototipo, el objeto principal debe ser inicializado. Cuando se determina la relación de herencia, pero los parámetros aún son inciertos, ¡no se puede jugar!
En resumen, este método no se usa generalmente.
Bien, hablemos de algo comúnmente usado. ¡Herencia mixta!
Esto se basa en dos métodos de herencia convencionales. Comparando los dos métodos de herencia, podemos encontrar que las ventajas y desventajas de los dos métodos de herencia son complementarios, por lo que es fácil mezclarlos!
La copia del código es la siguiente:
Función de personas (nombre)
{
this.name = name;
this.sayName = function () {
alerta ("mi nombre es"+nombre);
}
}
Function Girl (nombre, edad)
{
// Herencia de construcción
this.father = gente;
this.father (nombre);
Eliminar esto.
this.IntroDuce = function () {
alerta ("mi nombre es"+nombre+". Soy"+edad);
}
}
// herencia prototipo
Girl.Prototype = New People ();
Bien, una mezcla de los dos métodos, ahora veamos si el problema se ha resuelto.
var g = nueva chica ("xuan", 22);
alerta (g instancia de personas);
G.SayName ();
g.introduce ();
¡Pasó la prueba!
Esta es una solución relativamente perfecta, pero aumenta la complejidad del código, por lo que la solución específica depende de la elección de todos en la práctica.
Estas son todas las formas de jugar con JavaScript. Todos son bienvenidos a seguir mis otros artículos.