2016-09-16 5 views
8

クラスのインスタンスES6クラスとmodule.exportsは

var Foo = require(./foo); 
var myFoo = new Foo(); 
myFoo.bar(); 

このパターンは、Fooクラスが呼び出されるたびに複数のインスタンスを作成し続けます。

他のパターンは、私のfoo.jsのどこに慣れていたのでしょうか。

module.exports = { 
    bar: function() { 
    console.log('bar'); 
    } 
}; 

次に、私はただ電話バーを必要としています。

var foo = require(./foo); 
foo.bar(); 

質問これらの2つは同じように動作しますか? 2番目のパターンは、必要なときにオブジェクトを作成し続け、オブジェクトのバーを呼び出しますか?

シングルトンパターンを作成しないのは、他の言語で慣れているように、ケース1では良いアイデアです。

+0

あなたはES6を使用しているので、この機能をサポートするブラウザはごくわずかです。 –

+0

目的はbrowserではなくnodeJSで実行することです。 –

答えて

8

このパターンは、Fooクラスが呼び出されるたびに複数のインスタンスを作成し続けます。

はい、それが目的です。 new Foo();はあなたの例でも一度だけ実行されます。

これら2つは同じですか?

第二のパターンは、私が必要とし、対象物の上にバーを呼び出す毎回オブジェクトを作成しておくのだろうか?

No. require()コールはキャッシュされ、毎回同じモジュールが返されます。

シングルトンパターンは作成しないでください。

いいえ、シングルトンには状態が含まれていることはほとんどありません。あなたの例はありませんが、Node.jsでclassが使用されているのは通常です。

関連する問題