JavaScript多态实现报错:Uncaught TypeError: v.run is not a function 问题求助
问题原因与解决方案
嘿,我一眼就瞅出问题所在啦!你碰到的Uncaught TypeError: v.run is not a function错误,核心原因特别直白:
你从下拉框拿到的v是字符串类型(比如选中Car时,v的值是字符串"Car"),可不是你定义的Car或Truck类的实例。字符串对象本身压根没有run()方法,这不就报错了嘛!
修复步骤
我们需要把下拉框的字符串值,映射到对应的类并创建实例,这样才能调用类的run()方法。修改你的processData函数就行,代码如下:
function processData(form) { // 建一个映射表,把下拉框的字符串值和对应的类关联起来 const vehicleClassMap = { Car: Car, Truck: Truck }; const selectedVehicleType = document.getElementById("input").value; // 根据选中的类型获取对应类,创建实例 const vehicleInstance = new vehicleClassMap[selectedVehicleType](); const msg = vehicleInstance.run(); document.getElementById("result").innerHTML = msg; }
额外小提醒
另外,你原来的代码里v和msg没加let/const声明,会自动变成全局变量,这可能埋下潜在的bug,建议养成声明变量的好习惯哦~
内容的提问来源于stack exchange,提问作者user12240282
相关产品推荐
相关产品推荐

