2012-08-23 9 views
6

Piszę moduł node.js, który eksportuje dwie funkcje i chcę wywołać jedną funkcję z drugiej, ale widzę niezdefiniowany błąd odniesienia.Node.js: Wywołanie jednej wyeksportowanej funkcji z innego w tym samym module

Czy istnieje wzór, aby to zrobić? Czy po prostu wykonuję prywatną funkcję i owijam ją?

Oto niektóre przykładowy kod:

(function() { 
    "use strict"; 

    module.exports = function (params) { 
     return { 
      funcA: function() { 
       console.log('funcA'); 
      }, 
      funcB: function() { 
       funcA(); // ReferenceError: funcA is not defined 
      } 
     } 
    } 
}()); 

Odpowiedz

8

Lubię ten sposób:

(function() { 
    "use strict"; 

    module.exports = function (params) { 
     var methods = {}; 

     methods.funcA = function() { 
      console.log('funcA'); 
     }; 

     methods.funcB = function() { 
      methods.funcA(); 
     }; 

     return methods; 
    }; 
}()); 
+1

używam 'var _public = {};' i 'var _privat = {};' i zwraca '_public', co dodaje trochę czytelności. –

+2

Lub możesz po prostu użyć 'this.funcA()' ... – d11wtq

+0

Co robi "use strict" tutaj, przy okazji? – d11wtq

Powiązane problemy