简体   繁体   English

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

[英]Node JS Module, How can I use local function in module

I'm wondering how can I access local function in my module. 我想知道如何在模块中访问局部函数。

In calc module : 在calc模块中:

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

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

module.exports = calc;

However If I add some function use a local function like this : 但是,如果我添加一些功能,请使用如下所示的局部功能:

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

This is not working properly. 这不能正常工作。 I'd like to use both calc.add and calc.multi function at any time in my module. 我想随时在模块中同时使用calc.add和calc.multi函数。

What's wrong in my code? 我的代码有什么问题?

Edit :: 编辑::

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;

It depends on how you are calling verify() . 这取决于您如何调用verify()

Supposing your module is called calc.js , this should work: 假设您的模块名为calc.js ,这应该可以工作:

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

This does not work: 这不起作用:

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

Nor this: 也没有:

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

The reason is that if you call verify() as an unbound function, this will become undefined. 原因是,如果将verify()作为未绑定函数调用, this它将变得不确定。 If for some reason you want to call verify() as an unbound function, you can use bind() : 如果出于某种原因您想将verify()调用为未绑定函数,则可以使用bind()

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

Other way would be rewriting your calc.js module without using this : 其他方法是不使用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