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

JavaScript类中出现TypeError: this.getResults(...) is undefined问题求助

解决 TypeError: this.getResults(...) is undefined 的问题

咱们先拆解下你遇到的问题,这个错误大概率和方法名不匹配或者类方法未正确定义/上下文绑定有关,一步步来排查修复:

1. 先核对方法名的一致性

你提到代码里用的是this.loadResults('cpu'),但错误提示却是this.getResults(...)未定义——这说明你在代码的某个位置把方法名写错了!要么是调用时误写为getResults,要么是定义方法时用了loadResults但调用时搞混了,先把方法名统一成同一个(比如都用loadResults)。

2. 确保目标方法是类的实例方法

你的Builder类目前只定义了constructor、events和ourClickDispatcher,但缺少loadResults(或getResults)的方法定义,这肯定会导致调用时找不到对应的方法。必须在类里补充这个核心方法:

import $ from 'jquery';

class Builder {
  constructor() {
    this.events();
  }

  events() {
    $(".btn.btn-primary.btn-sm").on("click", this.ourClickDispatcher.bind(this));
  }

  ourClickDispatcher(e) {
    var currentButton = $(e.target).closest(".btn.btn-primary.btn-sm");
    // 假设按钮上有标识类型的自定义属性,比如data-type="cpu"
    const targetType = currentButton.data('type');
    // 调用统一后的方法名
    this.loadResults(targetType);
  }

  // 必须添加这个方法的定义!
  loadResults(type) {
    // 这里写你的加载逻辑,比如根据type请求对应数据
    console.log(`开始加载${type}相关结果`);
    // 举个jQuery请求的例子
    $.get(`/api/${type}-data`, (response) => {
      // 处理返回的结果数据
      console.log(`${type}结果加载完成:`, response);
    }).catch((err) => {
      console.error(`${type}结果加载失败:`, err);
    });
  }
}

3. 确认this的上下文绑定正确

你在events方法里用了this.ourClickDispatcher.bind(this),这一步是对的,确保ourClickDispatcher里的this指向Builder的实例。只要这里的绑定没问题,调用this.loadResults()时的上下文就不会出错。

额外小检查

  • 确保按钮元素上有正确的类型标识(比如<button class="btn btn-primary btn-sm" data-type="cpu">加载CPU结果</button>),这样ourClickDispatcher才能拿到正确的类型值
  • 检查代码里的拼写错误,比如方法名的大小写、变量名是否一致

内容的提问来源于stack exchange,提问作者Carol.Kar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:04:20