对于我来说,类与NodeJS(CommonJS)模块非常相似。你可以有很多,可以重用,可以互相使用,通常每个文件一个。NodeJS模块vs类
是什么使模块与类不同?你使用它们的方式不同,命名空间的差异很明显。除此之外,他们对我来说看起来非常相似,或者我只是没有在这里看到明显的好处。
对于我来说,类与NodeJS(CommonJS)模块非常相似。你可以有很多,可以重用,可以互相使用,通常每个文件一个。NodeJS模块vs类
是什么使模块与类不同?你使用它们的方式不同,命名空间的差异很明显。除此之外,他们对我来说看起来非常相似,或者我只是没有在这里看到明显的好处。
模块更像是类(使用Java术语)比类。你没有实例化一个模块;它只有一个副本。它是用于组织相关功能的工具,但通常不会封装特定对象实例的数据。
可能是与类最接近的类似物(抛开那些实际在JavaScript中构造基于类的继承的库)只是一个构造函数。您当然可以将这些功能放入模块中。
function Car() {
this.colour = 'red';
}
Car.prototype.getColour = function() { return this.colour; };
var myCar = new Car();
myCar.getColour(); // returns 'red'
您使用模块和类进行封装,但封装的性质是不同的。
一件重要的事情; “通常每个文件一个”的事情是不正确的;模块绝对是每个文件一个。将模块的exports
带入命名空间的require()
无法区分该模块的导出内容;使用require()
语句导入模块(文件)导出的所有内容。试图将多个模块放入文件只意味着当您尝试加载“任一”模块时,您将在该文件中获得所有内容。
JS最初是一个原型遗传系统。像其他语言一样,它非常简单。但是后来Netscape决定让它更像Java,并将构造函数的概念添加到语言中。因此伪类出生了。 您可以检查此链接了解如何OOP在原型JS使用: http://howtonode.org/prototypical-inheritance
什么令我着迷是使Node.js服务器上的基准 - CommonJS的模块VS ECMAScript的6类 –