我正在尝试使用带有私有动态调用函数的 jQuery 延迟,如下所示:
var module = (function(){
var privateFuncs = {
privateMethod: function(val) {
console.log(val);
}
};
var success = function() {
console.log('Success');
};
var publicMethod = function() {
var functionString = "privateMethod";
privateFuncs[functionString]('test').done(function(){
success();
});
};
return {
init: publicMethod
};
})();
module.init();
我收到了这个错误:
privateFuncs[functionString](...) is undefined
http://jsfiddle.net/cbelizon/pTaze/1/
有没有机会实现我正在寻找的东西?
不使用延迟对象,代码就像一个魅力,你可以在这里看到:
JavaScript,在公共方法中将私有函数作为字符串调用,而不使用 eval(显示模式)
谢谢!
编辑:
这是我的新代码:
var module = (function(){
var privateFuncs = {
privateMethod: function(val) {
console.log(val);
}
};
var success = function() {
console.log('Success');
};
var publicMethod = function() {
var functionString = "privateMethod";
var deferred = $.Deferred(privateFuncs[functionString]('test'));
deferred.done(function(){
success();
});
};
return {
init: publicMethod
};
})();
module.init();
问题是当我创建延迟对象时没有任何反应,请看这里: