Node JS Module,如何在模块

时间:2018-03-15 05:25:41

标签: node.js express module

我想知道如何在我的模块中访问本地功能。

在calc模块中:

var calc = {};
calc.add = function(a,b){
    return a+b;
};

calc.multi = function(a,b){
    return a*b;
};

module.exports = calc;

但是如果我添加一些函数,请使用这样的本地函数:

calc.verify = function(a,b){
    return (this.add(a,b)) + (this.multi(a,b))
};

这不能正常工作。 我想在我的模块中随时使用calc.add和calc.multi函数。

我的代码有什么问题?

编辑::

var calc = {};
calc.add = function(a,b){
    return a+b;
};

calc.multi = function(a,b){
    return a*b;
};

calc.verify = function(a,b){
    return (this.add(a,b)) + (this.multi(a,b))
};

module.exports = calc;

1 个答案:

答案 0 :(得分:1)

这取决于您如何调用verify()

假设您的模块名为calc.js,这应该有效:

const calc = require('./calc');
console.log(calc.verify(1,2));

这不起作用:

const calc = require('./calc');
const verify = calc.verify;
console.log(verify(1,2));

也不是这样:

const { verify } = require('./calc')
console.log(verify(1, 2));

原因是如果您将verify()称为未绑定的函数,this将变为未定义。如果由于某种原因您要将verify()称为未绑定功能,则可以使用bind()

const calc = require('./calc');
const verify = calc.verify.bind(calc);
console.log(verify(1,2));

其他方式是在不使用calc.js的情况下重写您的this模块:

calc.verify = function(a,b){
    return (calc.add(a,b)) + (calc.multi(a,b))
};