调用变量中指定的对象的Javascript成员函数

时间:2014-04-30 21:00:27

标签: javascript

我有以下所谓的 Revealing Module Pattern ,我想使用变量调用 a 函数 b 。我怎么能这样做?

foo = function() {
    a = function() {
    };

    b = function() {
        memberName = 'a';
        // Call a() using value stored in variable `memberName`.
    }

    return {b: b};
}();

2 个答案:

答案 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};
}();