次のようなプライベート動的呼び出し関数で延期された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();
問題は、遅延オブジェクトを作成しても何も起こらないことです。ここを見てください。