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

JS自定义helpers对象内方法互相调用报undefined错误如何解决

错误根因

对象字面量中定义的箭头函数没有独立的this指向,它的this会继承自定义时的外层作用域,当前模块环境下外层this为undefined,因此调用this.addFoo时会抛出找不到属性的错误。

解决方案

方案1:将对象方法改为普通函数(推荐)

普通函数作为对象方法调用时,this会自动指向调用它的对象本身,也可以用ES6的对象方法简写语法,本质也是普通函数:

var myHelpers = {
    addFoo(name) {
        return name + 'foo';
    },
    addFooBar(name) {
        return this.addFoo(name) + 'bar';
    }
}

window.myHelpers = myHelpers;
export default myHelpers;

方案2:直接通过对象名调用内部方法

如果不想调整函数类型,直接调用myHelpers本身的方法即可,不需要依赖this指向:

var myHelpers = {
    addFoo: (name) => {
        return name + 'foo';
    },
    addFooBar: (name) => {
        return myHelpers.addFoo(name) + 'bar';
    }
}

window.myHelpers = myHelpers;
export default myHelpers;

方案3:单独定义函数再组装导出

如果担心后续修改对象名带来维护问题,可以先单独定义所有工具函数,再组装成对象导出,完全避免this依赖问题:

const addFoo = (name) => {
    return name + 'foo';
}
const addFooBar = (name) => {
    return addFoo(name) + 'bar';
}

const myHelpers = { addFoo, addFooBar };
window.myHelpers = myHelpers;
export default myHelpers;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:15:05