I'm doing this for class and the test they have says my constructor is not being initialized so I looked that up and found this.init(). Now I am getting "this.init() is not a function and I am not sure why.
My code:
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()
}
Is it simply that you're not creating a new instance of the constructor?
Also, volume and surfaceArea are both functions and need to be called.
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);
I think you don't initialize you're class correctly. Try this syntax :
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());