2017-08-16 76 views
0

中不同功能的函数我正在重构JavaScript中的一些代码,这是一种语言,我并不是很熟悉,所以我在理解一些我正面临的错误时遇到了一些问题。访问module.exports

原代码,这工作得很好就是在这样的格式:

function doSomething(website){ 
//logic 
} 

function doSomethingElse(value){ 
    doSomething(value); 
} 

然而,我不得不把所有现有的代码模块出口语句中,我需要将它与其他服务进行整合。所以现在的代码看起来有点像:

module.exports = class DoAllThings{ 
    doSomething(website){ 
    //logic 
    } 

    doSomethingElse(value){ 
    doSomething(value); 
    } 
} 

但是,这不起作用,因为它说doSomething不是一个函数。我已经尝试设置功能的变种和访问它的方式,并通过访问。这如:

this.doSomething(value); 

无济于事。

我已经定义模块导出为一类,所以我可以做到这一点在另一个文件:

let accessVar = new DoAllThings(); 
accessVar.doSomethingElse(value); 

还有其他“类”我将有以下模式进行整合。那么有没有人知道我会如何去访问这些功能?我认为这与我回归事物的方式有关,但我不太确定。

+0

与出口类片段包含语法错误。你需要关闭'}',并且类方法不能使用'function foo(){}'来声明。你能不能请[mcve]? – PeterMader

+0

在'doSomethingElse'中,用'this.doSomething()'调用。 – vox

+0

修正了这个例子以更多地遵循我的实际代码。 – Yayahii

回答

0

一种方法:

//I am kinda private, can't be accesed from outside 
function doSomethingElse() { 
    console.log('something else'); 
} 
module.exports = { 
    doSomething: function() { 
    doSomethingElse(); 
    } 
} 

... 

const yourModule = require('yourModule'); 
yourModule.doSomething() //console.log 

另:

const doSomethingElse = function() { 
    console.log('something else') 
} 
const doSomething = function() { 
    doSomethingElse(); 
} 

module.exports = {doSomething} 

//or 
module.exports = {doSomething, doSomethingElse} 

随着等级:

module.exports = class Y { 
    doSomething() { 
    this.doSomethingElse(); 
    } 

    doSomethingElse() { 
    console.log('something else'); 
    } 
} 
+0

我需要访问这些作为这个文件以外的类的变量,这就是为什么我不能简单地使用module.exports。此外,代码库的其余部分也使用相同的模式,所以我不想脱离它,只要明白我是否做错了什么。 – Yayahii

+0

我不明白。你需要从任何需要访问的地方获得这个信息,实例化(如果你有一个类)并访问你拥有的任何公共属性或方法。 – yBrodsky

+0

检查我的第三个例子 – yBrodsky