オブジェクトにコールバックを動的に割り当てようとしていますが、この関数にプライベート変数へのアクセスを許可しているときに、これを行う方法がわからないようです。壁にぶつかったところにコメントを付けて、関連するコードを以下にリストしました。
オブジェクトファクトリ
function makeObj ( o ) {
function F() {}
F.prototype = o;
return new F();
}
モジュール
var MODULE = (function(){
var myMod = {},
privateVar = "I'm private";
return myMod;
})();
さまざまな試み
myMod.someDynamicFunc = function someDynamicFunc(){
//privateVar === undefined;
alert( privateVar );
}
myMod.someDynamicFunc();
myMod.prototype.someDynamicFunc = function someDynamicFunc(){
//ERROR: Cannot set property 'someDynamicFunc' of undefined
alert(privateVar);
}
myMod.someDynamicFunc();
この試みでは、モジュールオブジェクトにセッターを作成しようとしました...無駄になりました。
var MODULE = (function(){
var myMod = {},
privateVar = "I'm private";
myMod.setDynamicFunction = function ( func ){
if(func !== undefined && typeof func === "function"){
//Uncaught TypeError:
// Cannot read property 'dynamicFunction' of undefined
myMod.prototype.dynamicFunction = func;
//also tried myMod.dynamicFunction = func;
}
}
return myMod;
})();
var myModule = makeObject( MODULE );
myModule.setDynamicFunction(function(){
alert(privateVar);
});
myModule.dynamicFunction();
JavaScriptを間違って使用していますか?オブジェクトが開始された後にコールバックを割り当てることができるようにしたいと思います。これは可能ですか?