在对象内部使用函数内部功能

时间:2019-10-16 07:49:17

标签: javascript node.js function

我想将函数A调用为函数B。

我已经尝试从函数B调用函数A

module.exports = function(req, res) {
  return {
    function_a: function() {
      // do something here
    },
    function_b: function() {
      // call function_a
      const A = function_a(); // I want to be called something like this
      // do something here
    }
  }
}

我希望函数A在函数B中被调用

6 个答案:

答案 0 :(得分:3)

假定通过以下方式调用function_b

your_module().function_b();

然后,您可以使用this中的function_b访问该对象。

this.function_a();

如果该方法与对象分离,则将失去该连接,因此可能值得重写该模块,因此您获得的引用不依赖于this的值。例如:

module.exports = function(req, res) {

  const my_return_value = {
    function_a: function() {
      // do something here
    },
    function_b: function() {
      const A = my_return_value.function_a();
    }
  };

  return my_return_value;
}

答案 1 :(得分:1)

要引用对象内的另一个函数,可以使用this关键字。

此代码段可能对您有所帮助。

function name (firstName, lastName) {
  return {
    function_a: function() {
	return firstName
    },
    function_b: function() {
      const A = this.function_a(); 
	return A + lastName 
    }
  }
}

const initName = name('rohit', 'bhatia') 

console.log(initName.function_b())

此外,昆汀答案可能更有用/有用

答案 2 :(得分:0)

您当前拥有的代码无效的JavaScript。您正在尝试将函数作为函数内部的对象(??)处理。

您可以执行以下操作:首先在module.exports之外创建函数

function funcA(){
  console.log('Inside function A!');
}

function funcB(){
  funcA();
  console.log('inside function B!');
}

这将像任何两个函数一样。呼叫funcA()将记录'Inside function A!',呼叫funcB()将记录'Inside function A!' 'inside function B!'

然后您可以将其导出以在其他地方使用:

exports = {
  funcA: funcA,
  funcB: funcB
}

在这里,我们使用的是exports而不是module.exports。可以使用ES6 {funcA, funcB}简化以上操作,因为键和值具有相同的名称。

答案 3 :(得分:0)

尝试一下。您也可以访问此链接以查看处理问题的不同样式。 https://gist.github.com/kimmobrunfeldt/10848413

function a() {

}

function b() {
    a()
}

module.exports = {
    a: a,
    b: b
}

答案 4 :(得分:0)

您的代码在javascript中无效
应该是

module.exports = function(req, res) {
  const function_a = function() {
    // do something here
  }
  const function_b = function() {
    // call function_a
    function_a()
    // do something here
  }
}

或者您可能是说导出对象而不是函数

module.exports = {
  function_a:function() {
    // do something here
  },
  function_b:function() {
    // call function_a
    this.function_a()
    // do something here
  }
}

答案 5 :(得分:-2)

这看起来很令人困惑,但我认为您想要这样的东西:


module.exports = function(req, res) {
   functionA() {};

   functionB(){
     functionA();
   }
}

如果这不是您要找的答案,请告诉我们您要从模块中导出什么。

相关问题