Red de conocimiento informático - Material del sitio web - En el método de herencia de cadena de prototipos de JavaScript, ¿por qué las subclases no pueden pasar parámetros cuando llaman al constructor de la clase principal?

En el método de herencia de cadena de prototipos de JavaScript, ¿por qué las subclases no pueden pasar parámetros cuando llaman al constructor de la clase principal?

Creo que no es que los parámetros no se puedan pasar al constructor de la clase principal, sino que los parámetros pasados ​​no pueden desempeñar un papel al final. Por ejemplo:

function Parents(ln) { this.lastName=ln } //Definir el constructor de la clase principal

function Children(fn,ln) { this.firstName= fn } //Definir una subclase, apellido hereda de la clase principal

//Prototipo de herencia de cadena, pasa parámetros al constructor de la clase principal e intenta inicializar apellido con el ln pasado en el constructor de la clase secundaria. :

Children.prototype=new Parents(this ln);

//Intenta crear una instancia de objeto:

var child=new Children("Bill "," Gates");

//Resultados de salida. Obviamente, lastNmae no obtuvo el valor deseado:

alert(child.firstName);//Bill

alert(child.lastName);//Undefine

Esto muestra que pasar parámetros al constructor de la clase principal no es válido. La razón es que en el método de cadena prototipo, el código que llama al constructor de la clase principal no está en el constructor de la subclase. Los valores de atributo dados al crear la instancia del objeto (es decir, los parámetros del constructor de la subclase) no pueden afectar al padre. clase llamada por la subclase.

Por supuesto, puedes escribir así al heredar:

Children.prototype=new Parents("Gates");// Da un valor fijo al llamar al constructor de la clase principal

Sin embargo, este valor de atributo fijo definitivamente afectará las instancias de objetos de todas las subclases, lo que equivale a que el constructor de la subclase "tome sus propias decisiones" y "asigne valores" a los atributos de todas las instancias de objetos de antemano. Escribir de esta manera no se ajusta a las reglas de la programación orientada a objetos.