Использование функции внутри функции внутри объекта - PullRequest
0 голосов
/ 16 октября 2019

Я хочу вызвать функцию A для функции B.

Я уже пытался вызвать функцию A из функции B

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 ]

3 голосов
/ 16 октября 2019

Предполагая, что 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 голос
/ 16 октября 2019

Для ссылки на другую функцию внутри объекта вы должны использовать ключевое слово 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())

Кроме того, ответ Квентина может быть более полезным / полезным

0 голосов
/ 16 октября 2019

Ваш код недействителен в 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
  }
}
0 голосов
/ 16 октября 2019

Попробуй это. Вы также можете посетить эту ссылку, чтобы увидеть различные стили решения вашей проблемы. https://gist.github.com/kimmobrunfeldt/10848413

function a() {

}

function b() {
    a()
}

module.exports = {
    a: a,
    b: b
}
0 голосов
/ 16 октября 2019

Код, который вы используете в данный момент, не является допустимым 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}, поскольку ключ и значение имеют одно и то же имя.

0 голосов
/ 16 октября 2019

Это выглядит очень странно, но я предполагаю, что вы хотите что-то вроде этого:


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

   functionB(){
     functionA();
   }
}

Если это не тот ответ, который вы ищете, пожалуйста, сообщите нам, что вы хотите экспортировать из модуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...