2011-08-04 3 views
0

아래와 비슷한 문자열이 전달됩니다.문자열로 표현되는 호출 메서드

"Users_Controller.login" 

"Users_Controller"는 아래 개체를 나타냅니다. 그리고 그 안에 메소드를 "로그인"하십시오.

var Users_Controller = (function() { 
return{ 

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

} 
})(); 

주어진 문자열 만 포인터로 주어진다면 메서드를 호출 할 수 있습니까?

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

는이 기능을 사용할 수 있습니다.

+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