当我将express带入我的项目并创建一个新的快速应用程序时,我从这两行代码开始
var express = require('express');
var app = express();
在我看来,express
是一个返回我创建的app
对象的函数。但后来我可以使用express.static()
,这使我认为express
是方法static
的对象。
app.use(express.static('public'));
当我需要express
时,它似乎记录了一个对象,所以我很好奇express()
如果它是一个对象,它会返回什么内容?我最后的猜测是express是一个函数,但因为这是javascript,functions are objects并且它也可以有属性?这些都接近准确吗?
答案 0 :(得分:2)
两者。它是一个函数,它是一个对象 - 不仅在某种意义上,JavaScript中的每个函数都是一个对象。它实际上定义了一些自定义属性,比如express.static
,就像普通对象一样使用它。
为了演示它,我们假设您有一个简单的模块,它可以导出一个像Express
这样的函数'use strict';
function x() {
return 'x';
}
x.a = 1;
x.b = 'b';
x.c = () => 'c';
x.d = {a: 1, b: 2, c: 3};
module.exports = x;
现在当您需要模块时,例如
var x = require('./x');
你可以这样做:
console.log( x() );
但也是:
console.log( x.a );
console.log( x.b );
console.log( x.c() );
console.log( x.d.a );