[英]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.