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
相关产品推荐
相关产品推荐

