繁体   English   中英

节点JS模块,如何在模块中使用本地功能

[英]Node JS Module, How can I use local function in 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;

这取决于您如何调用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));

其他方法是不使用this来重写calc.js模块:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM