クロージャーを使用してコンストラクターを使用して作成されたこれら 2 つのオブジェクトの正確な違いは何ですか?a
b
このプロパティは__proto__
、クロージャーを使用して達成できないものに役立ちますか? これらの手法をさまざまな状況で使用する必要がありますか? メモリ使用量に違いはありますか?
( jsFiddle )
window.MODULE = {};
MODULE.constructor = function(){
this.publicVariable = 10;
};
MODULE.constructor.prototype.publicMethod = function(){
return this.publicVariable;
};
//-------------------------------//
MODULE.closure = (function(){
var publicMethod = function(){
return this.publicVariable;
};
return function(){
var obj = {};
obj.publicVariable = 10;
obj.publicMethod = publicMethod;
return obj;
};
}());
//-------------------------------//
var a = new MODULE.constructor();
console.log("constructor", a.publicMethod(), a)
var b = MODULE.closure();
console.log("closure", b.publicMethod(), b)
また、いくつかのプライベート プロパティと静的プロパティを使用した、より複雑な jsFiddle の比較も参照してください。どちらの手法も、私が知る限り同じように機能します...