Node.js-使用module.exports作为构造函数

Node.js-使用module.exports作为构造函数,第1张

Node.js-使用module.exports作为构造函数

CommonJS模块允许两种方法来定义导出的属性。无论哪种情况,您都将返回对象/功能。因为函数是Javascript中的一等公民,所以它们可以像对象一样 *** 作(从技术上讲,它们是对象)。就是说,您有关使用

new
关键字的问题有一个简单的答案:是的。我会说明…

模块出口

您可以使用

exports
提供的变量将属性附加到该变量。一旦在另一个模块中需要,这些分配属性将变为可用。或者,您可以将一个对象分配给module.exports属性。无论哪种情况,所返回的
require()
都是对的值的引用
module.exports

有关如何定义模块的伪代码示例:

var theModule = {  exports: {}};(function(module, exports, require) {  // Your module pre goes here})(theModule, theModule.exports, theRequireFunction);

在上面的示例中,

module.exports
exports
是相同的对象。最酷的部分是,您不会在CommonJS模块中看到任何内容,因为整个系统会为您处理所有这些,您需要知道的是,有一个带有Exports属性和Exports变量的模块对象指向该对象。
module.exports也做同样的事情。

需要构造函数

因为您可以直接将函数附加到函数上

module.exports
,所以实际上可以返回一个函数,并且像其他任何函数一样,都可以将其作为 构造
函数进行管理(这是斜体,因为Javascript中的函数和构造函数之间的唯一区别是您打算如何使用它。没有区别。)

因此,以下代码非常好,我个人鼓励这样做:

// My modulefunction MyObject(bar) {  this.bar = bar;}MyObject.prototype.foo = function foo() {  console.log(this.bar);};module.exports = MyObject;// In another module:var MyObjectOrSomeCleverName = require("./my_object.js");var my_obj_instance = new MyObjectOrSomeCleverName("foobar");my_obj_instance.foo(); // => "foobar"
要求非建设者

对于类似非构造函数的函数也是如此:

// My Moduleexports.someFunction = function someFunction(msg) {  console.log(msg);}// In another modulevar MyModule = require("./my_module.js");MyModule.someFunction("foobar"); // => "foobar"


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5476771.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存