You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS实例返回undefined问题:Square实例sideLength属性值异常求助

问题分析与解决

问题出在Square类调用父类Shape的构造函数时参数传递不匹配。

Shape的构造函数需要三个参数:name、sides、sideLength,但你在Square的构造函数里仅传入一个参数sideLength给super(),这会导致:

  • Shape的this.name被错误赋值为你传入的4
  • Shape的this.sides和this.sideLength因未传入对应参数,保持undefined
  • 后续你重新赋值了name和sides,但sideLength始终未被正确初始化,因此访问时返回undefined

修正后的代码

// 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) {
        // 按照Shape构造函数的参数顺序传递对应值
        super('Square', 4, sideLength);
        // 此处无需重复赋值name和sides,super已完成初始化
        // this.name = 'Square';
        // this.sides = 4;
    }

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

const newSquare = new Square(4);
console.log(newSquare.sideLength); // 现在会输出4

你也可以给Shape的构造函数设置默认参数来增强容错性,但最直接的方式是确保super()传递的参数与父类构造函数的定义完全匹配。

内容的提问来源于stack exchange,提问作者eraafay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 03:06:23