在节点中使用express时,我们编写app = express()
,这表明express模块只导出一个函数,即module.exports=function(){}
这样的东西,但同时为了使用静态文件,我们执行类似{{1}的操作这表明express模块将具有静态函数的对象导出为一个特征。有人可以解释这是否可能与此相矛盾?
答案 0 :(得分:1)
函数是JavaScript中的一等公民。你可以传递它们,你可以有效地将它们视为对象:
function express() {}
express.static = function () {};
express.SOME_CONSTANT = 42;
以上示例允许消费者将express()
作为函数调用,或引用express
的任何属性,其中一个恰好是另一个函数。
您可能在使用function prototype的内置方法之前遇到过此概念,例如call
,apply
或bind
:
function express() {}
const boundExpress = express.bind(someContext);