Estaba probando clases y esta palabra clave en Javascript, y escribí este código:
class p{ constructor(p,a){ p = pp; a = pa; }; }; const c = new p(p="1st aspect",a="2nd aspect"); console.log(this.c);Y obtuve este error:
Cannot read properties of undefined (reading 'a')No sé si esto es compatible con las clases o si pasé los argumentos incorrectos, ¿alguien puede ayudarme allí?
La sintaxis para crear una clase es incorrecta. No necesita pasar los nombres de los parámetros. Solo usa
const c = new p("1st aspect","2nd aspect"); Y no es una buena práctica usar la primera letra en minúsculas como nombre de clase. Use P en lugar de p . Y this.c está mal. solo imprime
console.log(c);Es solo que la sintaxis que está utilizando para crear una instancia de clase no es correcta en términos de intentar usar los nombres de argumento proporcionados ("p =", "a ="), y puede haber algunos errores en la construcción de su clase. Creo que puede haber estado tratando de hacer algo como esto:
class p { // These are ordered arguments, not named arguments constructor(p,a) { // Save the value of p and a on the class instance this.p = p; this.a = a; }; }; // Create a new p class instance with the arguments in order const classInstance = new p("1st aspect", "2nd aspect");El código debería verse así
class P { constructor(p, a){ this.p = p; this.a = a; }; }; const c = new P("1st aspect", "2nd aspect"); console.log(c); // <- just print cPuedo ver que estás mezclando algunos conceptos y confundiéndote, te sugiero que leas los documentos oficiales de MDN , aprenderás sobre las clases paso a paso.
Como extra, notará que los nombres de las clases se nombran usando PascalCase . Esto se debe a que, al seguir la convención de nomenclatura, leerá y entenderá el código de otras personas mucho más rápido (e incluso el suyo).
¡Espero que esto haya ayudado!