node.js - 如何知道从模块中导出了什么?
问题描述
到目前为止,我已经看到了在 node.js 中使用模块的不同方式。
从模块中导出对象:
var http=require('http'); http.createServer(<callback function>).listen(<port>)
在这里,
http
模块导出一个可用于调用其方法的对象导出构造函数:
var eventEmitter=require('events'); var obj= new eventEmitter();
这里的词
new
被用作构造函数返回的函数。我们可以使用eventEmitter
through object的方法obj
。导出功能:
var connect=require('connect'); var obj=connect();
这里函数是从模块中导出
connect
的,函数返回一个对象。该对象可用于调用其方法。
我的问题是如何知道出口的是什么?如何知道我们是否需要为使用new
运算符从模块导出的任何内容创建一个对象,或者导出的函数是否返回一个对象,或者模块本身是否导出一个对象。
解决方案
通常,人们会阅读他们正在使用的模块的文档并使用提供的语法。但是,如果您尝试以编程方式执行此操作:
模块导出可以是任何东西,可以将其视为任何其他 javascript 变量。与其他 javascript 变量一样,您可以使用typeof 运算符来区分对象和函数的类型。如果它是一个函数,您可以测试它是否是这样的构造函数
try {
new myFunction();
console.log("myFunction is a constructor");
} catch (err) {
console.log("myFunction is NOT a constructor");
}
推荐阅读
- css - 如何在不指定 minmax 大小的情况下强制此 CSS 网格换行?
- java - Selenium WebDriver——获取文本
- android - 如何将图像文件发送到服务器 - Kotlin 使用 Fuel
- javascript - 循环修改 HTML 元素列表
- sequelize.js - 如果未提供,Sequelize 构造函数是否具有默认数据库值?
- python - Django 休息框架网址
- haskell - 为什么 Haskell 中的 co 和逆变函子有区别,但范畴论没有区别?
- r - 为什么从索引零开始对向量进行切片是有效的?
- dataset - 在 gnuplot 中操作
- php - 在 laravel markdown 电子邮件中嵌入图像