javascript でアーキテクチャのようなクラスを作成しようとしていますが、ある点で立ち往生しています。コードは次のとおりです。
var make = function(args) {
var priv = args.priv,
cons = args.cons,
pub = args.pub;
return function(consParams) {
var priv = priv,
cons = args.cons;
cons.prototype.constructor = cons;
cons.prototype = $.extend({}, pub);
if (!$.isFunction(cons)) {
throw new Hata(100001);
}
return new cons(consParams);
}
};
返された関数オブジェクトのスコープと cons.prototype のオブジェクト スコープに priv 変数を追加しようとしていますが、作成できませんでした。
make オブジェクトの使用法は次のとおりです。
var myClass = make({
cons: function() {
alert(this.acik);
alert(priv.gizli);
},
pub: {
acik: 'acik'
},
priv: {
gizli: 'gizli'
}
})
myObj = myClass();
PS: 私がやりたいことを示すためだけに、外側の変数を使用しました。JavaScript関数構造のプライベート変数構文を知っています。しかし、「新しい」(パターン名を忘れた)インスタンス化パターンで使用される関数のスコープを変更(プライベート変数を追加)するための解決策が必要です。
PS: 私の英語を許してください...