当需要expression时,它是一个函数还是一个对象?
当我将快递带入我的项目并创build一个新的快递应用程序时,我从这两行代码开始
var express = require('express'); var app = express();
这在我看来像express
是一个函数,返回我创build的app
对象。 但后来我可以使用express.static()
,这使得我认为express
是static
方法的一个对象。
app.use(express.static('public'));
当我需要express
它似乎logging一个对象,所以我很好奇如何express()
返回的东西,如果它是一个对象? 我最后的猜测是express是一个函数,但是因为这是javascript, 函数是对象 ,它也可以有属性? 这些接近准确吗?
都。 这是一个函数,它是一个对象 – 不仅在JavaScript中的每个函数都是一个对象。 它实际上已经定义了一些自定义属性,如express.static
,使用它像一个普通的对象。
为了演示它,假设你有一个简单的模块,输出一个像Express一样的函数
'use strict'; function x() { return 'x'; } xa = 1; xb = 'b'; xc = () => 'c'; xd = {a: 1, b: 2, c: 3}; module.exports = x;
现在,当你需要你的模块,例如
var x = require('./x');
你可以做:
console.log( x() );
但也:
console.log( xa ); console.log( xb ); console.log( xc() ); console.log( xda );