ES6类继承代码运行正常但控制台报Cannot read property 'name' of undefined错误求解
问题排查结论
你贴出的这段ES6类代码本身不存在语法或逻辑问题,本地直接运行只会输出两行预期的日志,不会抛出Cannot read property 'name' of undefined错误。这个报错来自你当前运行环境的额外逻辑,你可以按以下方向排查:
- 检查这段代码之外的其他逻辑,是否存在读取未定义对象的
name属性的操作,常见场景包括调用未初始化变量的constructor.name、类装饰器的内部处理逻辑错误、调试工具的自动监听表达式读取了不存在的对象属性。 - 如果你用了低于7.x版本的Babel转译ES6语法后再运行,旧版本Babel处理继承类的边缘场景时可能会触发类名读取相关的内部错误,可以升级Babel版本,或者给Bicycle的构造函数参数补上和父类一致的默认值来规避:
class Bicycle extends Vehicle{ constructor(color = 'blue', wheels = 4, horn = 'beep beep'){ super(color, wheels, horn); this.wheels = 2; this.horn = 'honk honk'; } }
- 检查运行环境版本是否过老,IE浏览器完全不支持ES6 class语法,低版本Node也可能出现兼容问题,升级到Chrome/Edge现代浏览器或者Node 14+版本即可解决类相关的兼容报错。
内容的提问来源于stack exchange,提问作者K. Meyer
相关产品推荐
相关产品推荐

