我有以下所谓的 Revealing Module Pattern ,我想使用变量调用 a 函数 b 。我怎么能这样做?
foo = function() {
a = function() {
};
b = function() {
memberName = 'a';
// Call a() using value stored in variable `memberName`.
}
return {b: b};
}();
答案 0 :(得分:2)
问题是a
不是成员,而是变量(它应该是本地变量!)。除非您使用暗魔法(eval
),否则无法通过名称动态访问它们。
您需要使其成为对象的成员,以便您可以用括号表示法访问它:
var foo = (function() {
var members = {
a: function() { }
};
function b() {
var memberName = 'a';
members[memberName].call();
}
return {b: b};
}());
答案 1 :(得分:1)
foo = function() {
var inner = {
a : function() {
}
};
b = function() {
memberName = 'a';
// Call a() using value stored in variable `memberName`.
inner[memberName]();
}
return {b: b};
}();