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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:17:44