调用方法由字符串表示

时间:2011-08-04 12:41:37

标签: javascript

我正在传递类似于下面的字符串。

"Users_Controller.login"

“Users_Controller”代表下面的对象。 并“登录”其中的方法。

var Users_Controller = ( function () {
return{

  login : function(vo, callback)
   {......}

 }
 })();

只将字符串作为指针,是否可以调用方法?

2 个答案:

答案 0 :(得分:1)

您可以使用此功能:

function getPropertyFromString(str, start) {
    str = str.split(".");
    var prop = start || window;
    for (var i = 0; i < str.length; i++) {
        if(prop == undefined)
          return prop;
        else
          prop = prop[str[i]];
    }
    return prop;
}
getPropertyFromString("Users_Controller.login");

但是,这不允许使用括号语法。

答案 1 :(得分:1)

这样的东西?

var Users_Controller = (function () {
    return {

        login: function (name) {
            alert("hello " + name);
        },
        logout: function (name) { alert("goodbye "+name); }

    }
})();


var methods = {};

for (method in Users_Controller) {
    methods["Users_Controller." + method] = Users_Controller[method];
}

methods["Users_Controller.login"]('john');
methods["Users_Controller.logout"]('john');