this.prototype和module.exports之间的区别?

时间:2015-01-15 16:34:12

标签: javascript node.js

由于我是Node.js的新手,我正在寻找一些信息,编写一些测试内容以及阅读其他人的代码。

我已经看到创建/需要(使用)模块在Node.js中是典型的。我已经看到了在模块中定义“公共”方法和函数的不同方法,两者似乎也以同样的方式工作:

  • module.exports
  • this.prototype

使用其中一个是否存在显着差异?或者只是做同样事情的不同方式?这两个中的任何一个更好,还是取决于上下文?

1 个答案:

答案 0 :(得分: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();