Search code examples
javascriptclassinstance

Instance returning undefined (JS)


I am currently learning JavaScript from MDN and have run into a weird issue that I can't quite figure out. When I type newSquare.sideLength, it returns undefined, despite the instance having a number passed through it. What I need is for it to return the number 4 like I have passed through when creating the instance.

I've tried the same thing with a previous class and it worked perfectly fine but I don't quite understand what is wrong here.

Here's my code:

// OOJS 1
class Shape {
    name;
    sides;
    sideLength;
    constructor(name, sides, sideLength) {
        this.name = name;
        this.sides = sides;
        this.sideLength = sideLength;
    }

    calcPerimeter() {
        console.log(this.sides * this.sideLength);
    }
}

class Square extends Shape {
    constructor(sideLength) {
        super(sideLength);
        this.name = 'Square';
        this.sides = 4;
    }

    calcArea() {
        console.log(Math.pow(this.sideLength, 2));
    }
}

const newSquare = new Square(4);
console.log(newSquare.sideLength);

p.s. Sorry if this has a really simple solution, I've hit a block and I'm really trying to figure it out.


Solution

  • Construction is just like another function and sequence of arguments should be same. when you pass super(sideLength); It sets name = 4 and other two arguments sets to undefined

    You have to pass correct sequence of parameters in super function

    super('Square', 4, sideLength);