この質問は、私の古い質問Adding scope variable to a constructorの簡略版です。質問は簡単です関数を変更せずに priv 変数を fu() のスコープに追加できますか? (機能ブロック内には追加しません)
コードは次のとおりです。
fff = function() {
alert('constructed');
//alert(priv);
};
pro = {
pub: 'public'
}
var make = function(fu, pro) {
var priv = 'private';
fu.prototype = pro
return function() {
return new fu();
};
};
var cls = make(fff, pro);
var obj = cls();
alert(obj.pub);
コメントを外すとわかるように
//alert(priv);
line Uncaught ReferenceError: priv is not defined エラー。
fu() 関数オブジェクトのスコープを再定義する方法が必要です。