在 JavaScript 模块中使用它

using this in JavaScript module

我写了以下代码(模型):

module.exports = {
    test() {
        console.log('test')
    },
    iffer(nb) {
        if (nb !== 0) {
            this.test()
        }
    }
}

我收到错误“test is not a function”。

并尝试了以下方法:

let that = this
module.exports = {
    test() {
        console.log('test')
    },
    iffer(nb) {
        if (nb !== 0) {
            that.test()
        }
    }
}

此解决方案仍然无效,因为 JavaScript 模块默认启用严格模式。有谁知道这个问题的解决方案吗?

再次参考module.exports

iffer(nb){
    if (nb !== 0) {
        module.exports.test()
    }
}

您也可以先将导出的对象放入一个独立的变量中,以便于引用。或者,让 所有 函数独立以便于参考,然后导出包含所有这些函数的对象。

const test = () => console.log('test');
const iffer = (nb) => {
    if (nb !== 0) {
        test();
    }
};
module.exports = { test, iffer };

如果您的环境与 ES6 模块语法兼容,我建议改用它们。

export const test = () => console.log('test');
export const iffer = (nb) => {
    if (nb !== 0) {
        test();
    }
};