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

JavaScript嵌套函数调用buy方法报未定义错误如何解决?

错误点汇总
  • 1 构造函数私有方法未暴露:你在Portfolio构造函数内部定义的buy、sell都是私有函数,仅能在构造函数内部访问,没有挂载到实例上,外部调用portfolio.buy()自然会报方法未定义。
    修正方式:在Portfolio构造函数内添加挂载代码:
    this.buy = buy;
    this.sell = sell;
    
  • 2 stockHoldings方法逻辑错误:你定义的this.stockHoldings方法里写了return stockHoldings(),但stockHoldings是你声明的Map实例,不是函数,加括号调用会抛出类型错误。
    修正方式:去掉调用括号,直接返回Map实例:
    this.stockHoldings = function() {
      return stockHoldings;
    }
    
  • 3 generetePortfolio返回值错误:函数最后一行写了return portfolio(),portfolio是new Portfolio()生成的实例对象,不是函数,调用会报错。
    修正方式:直接返回实例即可:
    return portfolio;
    
  • 4 myPositions遍历逻辑错误:你直接调用portfolio.stockHoldings.forEach,但stockHoldings是挂载在实例上的方法,需要先执行拿到Map实例才能遍历。
    修正方式:改为portfolio.stockHoldings().forEach(...)
  • 5 依赖未定义风险:代码中使用的Trade类、以及Trade实例的isBuyOrDrip、isSell方法没有给出实现,如果实际代码中未定义这部分逻辑,运行时也会抛出未定义错误。
  • 6 数值类型转换问题:你在generetePortfolio中把quantity、price都转为了字符串类型传入Trade构造函数,后续做数量计算、价格计算的时候如果没有手动转成数字,会出现字符串拼接、计算结果异常的问题,建议传入前转成Number类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:18:02