0
votes

Utilisation d'une fonction à l'intérieur d'une fonction à l'intérieur d'un objet

Je veux appeler la fonction A à la fonction B.

J'ai déjà essayé d'appeler la fonction A à partir de la fonction 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
    }
  }
}

Je m'attends à ce que la fonction A soit appelée à l'intérieur de la fonction B


5 commentaires

veuillez ajouter comment vous aimez appeler les fonctions.


C'est assez simple, pour que vous puissiez appeler n'importe quelle fonction, elle doit être visible (disponible pour la portée de l'appelant).


Votre code existant contient des erreurs de syntaxe (vous semblez mélanger la syntaxe du littéral d'objet et du corps de la fonction). Vous devez gérer cela avant de vous soucier de la façon d'accéder à une fonction depuis l'autre (car comment vous résolvez ce problème influence sérieusement la façon dont vous résolvez le problème que vous posez)


Ici, vous dites que vos exportations seront fonction module.exports = function (req, res) { puis lorsque vous faites cela function_a: function () {// faites quelque chose ici},


déjà édité la fonction. pouvez-vous m'aider?


6 Réponses :


-2
votes

Cela semble très déroutant mais je suppose que vous voulez quelque chose comme ceci:

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

   functionB(){
     functionA();
   }
}

Si ce n'est pas la réponse que vous cherchez, dites-nous ce que vous voulez exporter depuis le module .


1 commentaires

J'ai déjà la logique mais je ne sais pas comment faire. et votre code ci-dessus ne peut pas être utilisé.



0
votes

Le code que vous avez actuellement n'est pas un JavaScript valide. Vous essayez de gérer les fonctions comme un objet à l'intérieur d'une fonction (??).

Voici ce que vous pouvez faire: commencez par créer les fonctions en dehors de module.exports

exports = {
  funcA: funcA,
  funcB: funcB
}

Cela se comportera comme deux fonctions le feraient. L'appel de funcA () enregistrera 'Inside function A!' et l'appel de funcB () enregistrera 'Inside function A!' 'inside function B!' comme prévu.

Vous pouvez ensuite les exporter pour les utiliser ailleurs:

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

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

Ici, nous utilisons exporte plutôt que module.exports qui est équivalent. Ce qui précède peut être simplifié avec ES6: {funcA, funcB} puisque la clé et la valeur ont le même nom.


0 commentaires

0
votes

Essayez ceci. vous pouvez également visiter ce lien pour voir les différents styles de traitement de votre problème. https://gist.github.com/kimmobrunfeldt/10848413

function a() {

}

function b() {
    a()
}

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


0 commentaires

3
votes

En supposant que function_b est appelé via:

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;
}

Ensuite, vous pouvez accéder à l'objet avec this à l'intérieur de function_b code>.

this.function_a();

Si la méthode se détache de l'objet, alors vous perdrez cette connexion, donc cela vaudra peut-être la peine de réécrire le module afin que vous ayez une référence qui ne le fait pas. t dépendent de la valeur de this . Par exemple:

your_module().function_b();


3 commentaires

Pouvez-vous s'il vous plaît inclure un exemple pour Si la méthode se détache de l'objet, vous perdrez cette connexion


wow ce travail tout simplement parfait. J'essaierai d'en tirer la logique. Merci.


jQuery.ajax ("some url"). then (your_module (). function_b) détacherait la méthode de l'objet (par exemple).



0
votes

Pour faire référence à une autre fonction à l'intérieur d'un objet, vous utiliseriez ce mot-clé.

Cet extrait peut vous être utile.

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())

En plus, la réponse de Quentin pourrait être plus utile / utile


0 commentaires

0
votes

Votre code n'est pas valide en javascript
Il est censé être

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

Ou vous pouvez dire exporter un objet pas une fonction

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


0 commentaires