我正在尝试为我的对象动态分配回调,但在授予此函数访问私有变量的权限时,我似乎无法找到一种方法。我在下面列出了相关代码以及我遇到墙壁的注释。
对象工厂
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 吗?我真的很希望能够在对象启动后分配回调。这可能吗?