22

私にとって、クラスは NodeJS (CommonJS) モジュールに非常に似ています。それらの多くを持つことができ、それらは再利用でき、相互に使用でき、通常はファイルごとに 1 つです。

モジュールとクラスの違いは何ですか? それらの使用方法は異なり、名前空間の違いは明らかです。それに加えて、それらは私には非常に同じように見えるか、おそらくここで明らかな利点が見られないだけです.

4

3 に答える 3

25

モジュールは、クラスよりもパッケージ (Java 用語を使用する場合) に似ています。モジュールをインスタンス化しません。そのコピーは 1 つだけです。これは関連する機能を整理するためのツールですが、通常、オブジェクトの特定のインスタンスのデータをカプセル化するわけではありません。

おそらくクラスに最も近い類似物は (実際に JavaScript でクラスベースの継承を構築するライブラリは別として)、単なるコンストラクター関数です。もちろん、そのような関数をモジュール内に配置することもできます。

function Car() {
    this.colour = 'red';
}
Car.prototype.getColour = function() { return this.colour; };

var myCar = new Car();
myCar.getColour(); // returns 'red'

カプセル化にはモジュールとクラスの両方を使用しますが、そのカプセル化の性質は異なります。

于 2011-08-02T15:45:50.407 に答える
3

JS は当初、プロトタイプの継承システムでした。他の言語と同様に非常にシンプルでした。しかしその後、Netscape はそれをより Java に近づけることを決定し、言語にコンストラクターのアイデアを追加しました。したがって、疑似クラスが生まれました。このリンクをチェックして、プロトタイプ OOP が JS でどのように使用されているかを確認できます: http://howtonode.org/prototyp-inheritance

于 2013-08-09T09:24:07.357 に答える
0

1つの重要なこと。その「通常、ファイルごとに1つ」ということは真実ではありません。モジュールは絶対にファイルごとに 1 つです。require()モジュールを名前空間に持ち込む には、そのモジュールのエクスポートexportsされたコンテンツを区別する方法がありません。モジュール (ファイル) がエクスポートするものはすべてrequire()ステートメントでインポートされます。複数のモジュールをファイルに入れようとしても、「いずれかの」モジュールをロードしようとすると、そのファイル内のすべてが取得されるだけです。

于 2011-08-02T16:48:13.397 に答える