Estoy haciendo esto para la clase y la prueba que tienen dice que mi constructor no se está inicializando, así que lo busqué y encontré this.init() . Ahora obtengo "this.init() no es una función y no estoy seguro de por qué.
Mi código:
function CuboidMaker(length, width, height){ const volume = () => { return this.length * this.width * this.height } const surfaceArea = () => { return 2 * (this.length * this.width + this.length * this.height + this.width * this.height) } this.length = length this.width = width this.height = height this.volume = volume this.surfaceArea = surfaceArea this.init() }¿Es simplemente que no está creando una nueva instancia del constructor?
Además, el volume y el área de surfaceArea son funciones y deben llamarse.
function CuboidMaker(length, width, height){ const volume = () => { return this.length * this.width * this.height; } const surfaceArea = () => { return 2 * (this.length * this.width + this.length * this.height + this.width * this.height); } this.length = length; this.width = width; this.height = height; this.volume = volume(); this.surfaceArea = surfaceArea(); } const a = new CuboidMaker(1, 2, 3); console.log(a);Creo que no inicializas tu clase correctamente. Pruebe esta sintaxis:
class CuboidMaker{ constructor(length, width, height){ this.length = length; this.width = width; this.height = height; } volume(){ return this.length * this.width * this.height } surfaceArea(){ return 2 * (this.length * this.width + this.length * this.height + this.width * this.height) } } let myCuboid = new CuboidMaker(1, 2, 3); console.log(myCuboid.volume()); console.log(myCuboid.surfaceArea());