2011-08-04 37 views
0

我正在傳遞類似於下面的字符串。由字符串表示的調用方法

"Users_Controller.login" 

「Users_Controller」 表示以下的對象。 並「登錄」其中的一種方法。

var Users_Controller = (function() { 
return{ 

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

} 
})(); 

鑑於只有字符串作爲指針,是有可能調用該方法?

回答

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"); 

然而,這不允許括號語法。

+0

這工作的一種享受。謝謝 – Chin

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'); 
+0

有趣的感謝。 – Chin