en la derivación de clase estándar, no es el error casi universal de que deriva de una instancia de clase de base recién creado (B.prototype = new A). El constructor de la clase base, al menos, ejecuta código innecesario y, en el peor de los casos, puede bloquearse sin los argumentos de entrada que no deberían tener que crearse artificialmente solo por el bien de la derivación. Además, las funciones de instancia de la instancia de clase base se vuelven parte del prototipo de clases derivadas, que solo es apropiado por pura suerte.
¡Seamos claros! Si heredas de una instancia de clase base creada por el constructor de la clase base (B.prototype = new A), ¡en realidad no heredas directamente de la clase base! ¡Has creado un intermediario en la cadena de herencia, es decir, la instancia de la clase base! ¡¡¡¡Ay!!!! Esto es ineficiente porque hay una profundidad extra en la búsqueda de valores de propiedad heredados en la cadena de herencia. Esta profundidad se acumula cada vez que cometes este error.
Entonces, ¿cuál es la forma correcta. En lugar de B.prototype = new A debe escribir B.prototype = Object.create (A.prototype). Esto puede no haber estado disponible en 09. Sin embargo, en 09 todavía había
protoProxy = function(myClass)
{
function foo(){};
foo.prototype = myClass.prototype;
return new foo();
}
como sustituto de Object.create. En lugar de B.prototype = new A debe escribir B.prototype = protoProxy (A) en 09;
gracias de antemano. –
antes de lo que –
avance de gracias –