为什么Javascript中函数调用后会有一个点?
在express.js中,为什么是为什么Javascript中函数调用后会有一个点?,javascript,node.js,express,Javascript,Node.js,Express,在express.js中,为什么是 .Server(app); 作为声明有效吗 var http = require('http').Server(app); require()不是一个函数,不是一个对象吗?调用require函数返回一个对象,其中Server是一个成员/字段。require是一个函数。但是,require(…)可以是特定CommonJS模块使用module.exports=…导出的任何内容 此外,函数也是对象。即使require(…)是一个函数,它也可以有一个属性。Node
.Server(app);
作为声明有效吗
var http = require('http').Server(app);
require()
不是一个函数,不是一个对象吗?调用require
函数返回一个对象,其中Server
是一个成员/字段。require是一个函数。但是,require(…)
可以是特定CommonJS模块使用module.exports=…
导出的任何内容
此外,函数也是对象。即使require(…)
是一个函数,它也可以有一个属性。Node.js中的CJS模块提供默认导出为require(…)
,而命名导出可以作为属性访问,这是一个常见的方法。如果默认导出是一个函数,它是:
function defaultFooExport() {...}
defaultFooExport.namedFooExport = ...;
module.exports = defaultExport;
因此,可以将其导入为:
const foo = require('foo');
const { namedFooExport } = require('foo');
require()不是函数,不是对象吗
require
是解析为函数的变量
require()
是一个表达式,其计算结果为无参数调用该函数的返回值
该返回值可能是一个对象
require()不是函数,不是对象吗
函数是JavaScript中的对象:
console.log(函数(){}对象实例)代码>调用此方法
require
函数返回一个对象
,该对象
将有一个名为Server
的键,这是一个函数。您可以将参数传递给require和Server函数
最简单的例子是这样的
功能要求(msg){
控制台日志(msg);
返回{
“服务器”:功能(消息){
控制台日志(msg)
}
}
}
require(“require message”).Server(“some message”);
要求(“仅要求呼叫”);
require(“通过服务器调用require”).Server(“这是一个链接调用…”)代码>在java脚本中,有几种方法可以实现模块模式,如“匿名闭包”、“类似于JQuery模块的全局导入”、CommonJS required、AMD UMD等。因此,当我们通过导入或required使用模块时,我们在内部获得对对象的引用。获得对象后,我们通过“.”运算符调用对象中的方法。因此,在“var http=require('http').Server(app);”的情况下,我们首先在var http中创建对象引用,然后通过将app作为参数传递来调用该对象中存在的方法“Server(app)”。这是一篇很好的文章,有助于理解更多的需求以及它是如何工作的。今天,我尝试修复关于我们项目的javascript错误,许多错误是由空值或未定义的值引起的。比如说
Cannot read property 'render' of null
Cannot read property 'message' of undefined
o.size is not a function
require('xxx'),如果您不知道其退货情况,请在使用前做出判断。例如:
属性
if(res){
console.log(res.message);
//....your statement.....
}
作用
if(o && o.size){
console.log(o.size());
//....your statement.....
}
require
是一个函数,但它返回一个对象。正如@Teemu所说,“require”返回一个对象。这里,以顺序或链式方法var http=require('http').Server(app)编写;这只是意味着,var http=require('http');var server=http.server(app);Teemu说了些什么,如果你想了解这个主题,你可能还想查找“方法链接”的可能副本。另外,Server
是用大写字母写的,这可能会有点让人困惑——这与正常函数的JS风格相反。我认为express人员这样做是为了强调Server()
调用返回服务器对象并有效地充当其构造函数