2015-01-15 58 views
3

由於我是Node.js的新手,我正在尋找一些信息,編寫一些測試內容並閱讀其他人的代碼。this.prototype和module.exports之間的區別?

我見過創建/需要(使用)模塊是典型的Node.js。我見過定義模塊內的「公共」的方法和功能的不同方式,似乎都工作了相同的方法:

  • module.exports
  • this.prototype

是否有一個顯着的區別使用一個還是另一個?或者,做同樣的事情只是不同的方式?這兩個更好,還是取決於上下文?

+2

從來沒有一次看到'this.prototype'用於定義的模塊。您應該始終遵循[documentation](http://nodejs.org/api/modules.html)中定義的方法。 – 2015-01-15 16:38:30

+0

@BenFortune我在閱讀別人的代碼時發現'this.prototype'。看看[這個代碼](https://github.com/ttezel/twit/blob/master/examples/bot.js) – charliebrownie 2015-01-15 16:47:32

+0

你鏈接的代碼中沒有'this.prototype' ... – mscdex 2015-01-15 16:53:25

回答

2

您應該使用exports將屬性附加到預定義的導出對象或將module.exports重新指定給您自己的對象。後者在導出構造函數時很常見。

exports.foo = function() { console.log('Hello world!'); }; 
exports.add = function(a, b) { return a + b; }; 

// Then the module might be used like so: 
// var mymodule = require('./mymodule'); 
// mymodule.foo(); 
// console.log(mymodule.add(1, 9)); 

或更換exports對象:

function Foo() { 

} 

module.exports = Foo; 

// then typically users do this in their script: 
// var Foo = require('./mymodule'); 
// var myFoo = new Foo(); 
+1

是的,'module.exports'和'exports'是同樣的事情嗎?他們很酷解釋[這裏](http://www.sitepoint.com/understanding-module-exports-exports-node-js/)! – charliebrownie 2015-01-15 16:51:22

+1

它是'module.exports',但是,它們最初是*相同的東西。但是'module.exports'允許你重寫導出的對象,如我的例子所示。 – mscdex 2015-01-15 16:52:28

+0

你說得對,我拼寫錯了,謝謝你指出。只是編輯了整個事情。謝謝! – charliebrownie 2015-01-15 16:57:56