首页 > 解决方案 > 为什么可以在类定义中调用函数而不在 NodeJS 中创建它的对象?

问题描述

例如:

var fs = require('fs');
var currDir = fs.readdirSync('./lib');
console.log(currDir);

此代码按预期正常工作。但我不明白,当类 fs 的对象尚未创建时,如何调用函数 fs.readdirSync() 。

var fsClass = require('fs');
var fs = new fsClass();
var currDir = fs.readdirSync('./lib');
console.log(currDir);

但是,当我尝试创建一个对象并在该实例上调用该函数时,代码不起作用。错误信息:

TypeError: fsClass is not a constructor
    at Object.<anonymous>

谢谢你!

标签: javascriptnode.jsoop

解决方案


fs对象已通过以下方式创建:

var fs = require('fs');

fs模块导出一个已经创建的对象。 fs不是构造函数或类。它是一个已经创建的对象,您可以直接调用它的方法。

一个模块可以导出任意数量的东西。它可以导出一个已经创建并且已经有方法的对象。它可以导出一个构造函数,人们会调用它来创建一个对象。它只能导出一个值。在这种特殊情况下,fs模块导出一个已经创建的模块,您可以直接调用该模块的方法。无需执行单独的构造函数来创建另一个对象。


推荐阅读