无法直接在导出的模块上访问它

时间:2018-09-18 12:09:31

标签: javascript reactjs ecmascript-6

我不确定JS模块是否应该像这样工作,但这没有任何意义。我正在使用React,我想从一个模块导出一个对象,然后在该对象上调用方法。到目前为止,该方法运行良好,但问题是在被调用的方法内部,this并未指向对其进行调用的对象,并且我无法访问其他成员方法。这是一个示例:

export let localService = {
     getData: () => {
        console.log(this);
        this.testMethod();
     },

    testMethod: () => {

    }
};

在另一个文件中,我导入对象并调用方法:

import {localService} from '../../localService.js';

localService.getData();

现在事情变得奇怪了,在getData内部,我无法直接访问this.testMethod(),因为this有点不同,这是console.log(this)的输出

enter image description here

,当然,调用this.testMethod()会引发错误,指出该方法不存在。我可以像这样访问testMethod()this.a.testMethod(),但是这个a来自哪里?那是正常现象,还是React的错?

1 个答案:

答案 0 :(得分:0)

现在您的localService是json数据类型,这就是您在进行控制台操作时获得a的原因,您无法在其中调用其他功能。

您必须分别创建每个功能。

使用以下内容创建localService.js

export const getData = () => {
    console.log("getData");
    testMethod();
};

export const testMethod = () => {
    console.log("testMethod");
};

像这样导入localService.js

import * as localService from '../../localService.js';

现在您可以致电localService.getData()