我想知道如何在我的模块中访问本地功能。
在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;
答案 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))
};