単一インスタンスと複数インスタンスの観点から、モジュールパターンに続くこれらの余分なコード行を、メソッドとプロパティを定義した標準コンストラクタを使用するだけで書くのはなぜですかコンストラクタ本体で?JavaScriptモジュールパターンvsコンストラクタで定義されたメソッドを持つコンストラクタ
モジュールのパターンサンプル:http://jsfiddle.net/T3ZJE/1/
var module = (function() {
// private variables and functions
var foo = 'bar';
// constructor
var module = function() {
};
// prototype
module.prototype = {
constructor: module,
something: function() {
}
};
// return module
return module;
})();
var my_module = new module();
console.log(my_module)
コンストラクタのサンプルは:私にhttp://jsfiddle.net/EuvaS/2/
function Module(){
// private variables and functions
var foo = 'bar';
//public methods
this.something = function() {
}
}
var my_module = new Module();
console.log(my_module);
最終的な結果はほとんど同じです。どちらもパブリックプロパティとメソッドを持つことができ、どちらもパブリックメソッドでアクセスできる「プライベート」変数とメソッドを持つことができます。
どちらもシングルトンに対してpublic/prototypeメソッドを一度定義し、両方ともオブジェクトの複数のインスタンス/クローンに対して複数回定義します。
何か不足していますか?違いはなんですか?
これは実際に重要な違いの1つです。 – Fergal
poopsとgigglesの場合、Constructorメソッドをわずかに変更すると、静的private varsが作成され、パブリックメソッドは一度しか定義されず、コンストラクタースコープ内のすべてのprivate varsにアクセスできます。http://jsfiddle.net/zHwQX/2/ – Fergal
@ファルガル良い点は、どちらもそれを見ていない。だから私は全体的な、より多くの機能とより小さなメモリのフットプリントを考えます – Damp