例如:
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>
谢谢!
答案 0 :(得分:1)
fs
对象已使用以下方法创建:
var fs = require('fs');
fs
模块导出已创建的对象。 fs
不是构造函数或类。这是一个已经创建的对象,您可以直接调用其方法。
一个模块可以导出许多东西。它可以导出一个已经创建并具有方法的对象。它可以导出一个构造函数,该函数将调用该函数来创建一个对象。它可以只导出一个值。在这种特殊情况下,fs
模块将导出一个已经创建的模块,您可以直接在其上调用方法。无需执行单独的构造函数来创建另一个对象。
答案 1 :(得分:0)
fs
不是类,而是对象。
该对象已导出,因此当您require
时,所有定义的功能都可用。
看一下代码: https://github.com/nodejs/node/blob/1375af204a30d1885b9e8bf79725cbd223707439/lib/fs.js#L1796
它们导出一个带有功能的对象。
现在假设您创建一个类,而不仅仅是一个常规对象(即{}
),您可以将其导出为类或对象
module.exports = SomeClass
或
modules.exports = new SomeClass();
答案 2 :(得分:-1)
您需要停止思考Java,C#和相关语言附带的经典继承模型。 在JavaScript中没有像这样的语言的“类” ;而是使用mechanism based on prototypes。即使ES2015将“类”的概念引入JavaScript中,它也只是构造函数的语法糖。
因此,尊重您的问题:
并非所有内容都必须由JavaScript中的类组成
还有object
之类的其他结构和类型,正是GL_TEXTURE_2D
模块的类型。它们只是存储数据的键/值结构。