2016-03-04 56 views
3

我們如何使用nodeJS中的module.exports函數返回函數?如何在nodeJS中使用module.exports返回函數?

file_1 book.js

module.exports = function() { 
    var points = 0; 
    return { 
     rate: function(value) { 
      points = value; 
     }, 
     get: function() { 
      return points; 
     } 
    } 
} 

book.js是根文件。
我們創建了兩個不同的實例。
但無法獲取root的方法到script.js文件。

file_2 main.js

var bA = require('./book.js'); 
    var bB = require('./book.js'); 
    bB.rate(10); 
    bB.get(); 

輸出=>can not find rate and get method.

+1

嘗試'要求(」 ./ book.js' )()'因爲你必須真正執行導出的對象。 –

回答

6

因爲該函數將返回與給rateget函數的引用的對象,則需要與執行它一個()就要求如此:

var book = require('./book.js')(); 
    book.rate(10); 
    book.get(); 
0

您正在返回一個返回對象的函數。

調用該函數並獲取對象

/*file_2 main.js*/ 
    var bA = require('./book.js')(); 
    var bB = require('./book.js')(); 
    bB.rate(10); 
    bB.get(); 
-1

您也可以到您的匿名導出函數提供一個名稱爲

module.exports.myfun = function() { 
var points = 0; 
return { 
    rate: function(value) { 
     points = value; 
    }, 
    get: function() { 
     return points; 
    } 
} } 

然後使用該函數在另一個文件as

var inc = require('./comp.js'); 
var mod = inc.myfun(); 
mod.rate(10); 
console.log(mod.get()); 

這樣你不需要有「()」在所需的時間,但該選項還可以用來