我有这个nodeJS代码。
module.exports = {
foo: function(req, res){
...
this.bar(); // failing
bar(); // failing
...
},
bar: function(){
...
...
}
}
我需要从bar()
方法中调用foo()
方法。我尝试了this.bar()
以及bar()
,但都没有说TypeError: Object #<Object> has no method 'bar()'
。
如何从另一个方法调用一个方法?
答案 0 :(得分:8)
这样做:
module.exports = {
foo: function(req, res){
bar();
},
bar: bar
}
function bar() {
...
}
不需要关闭。
答案 1 :(得分:5)
接受的响应错误,您需要使用&#34; this&#34;从当前范围调用bar方法。关键字:
module.exports = {
foo: function(req, res){
this.bar();
},
bar: function() { console.log('bar'); }
}
答案 2 :(得分:3)
我认为在传递回调之前你可以做的是bind上下文。
something.registerCallback(module.exports.foo.bind(module.exports));
答案 3 :(得分:2)
试试这个:
module.exports = (function () {
function realBar() {
console.log('works');
}
return {
foo: function(){
realBar();
},
bar: realBar
};
}());
答案 4 :(得分:1)
尝试以下代码。您可以从任何地方引用每个函数(需要导入.js文件)
function foo(req,res){
console.log("you are now in foo");
bar();
}
exports.foo = foo;
function bar(){
console.log("you are now in bar");
}
exports.bar = bar;
答案 5 :(得分:0)
条形图是针对foo的内部(私有)吗?
module.exports = {
foo: function(req, res){
...
function bar() {
...
...
}
bar();
...
}
}
答案 6 :(得分:0)
在Node js + Express中,您可以在同一控制器中使用此语法
//myController.js
exports.funA = () =>{
console.log("Hello from funA!")
//cal funB
funB()
}
let funB = () =>{
console.log("Hello from funB!")
}
请确保在函数前使用 let 关键字,并在主函数内使用()括号进行调用
输出
App listening at http://localhost:3000
Hello from fun A!
Hello from fun B!