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