2013-03-14 30 views
2

我有點實現我自己非常基本的MVC控制器,我只想要如果我有一個viewName,我想實例化名稱爲'viewName'的javascript對象。例如。從它的名字實例化一個JavaScript對象

可以說我有一個對象定義

function ViewABC() {} 
ViewABC.prototype.init = function() { 
     alert("comes here!"); 
}; 

現在在我的控制器模塊的地方,我得到一個視圖名稱爲「ViewABC」。我想要的是用的viewName

function(viewName){ 
//check if viewName exists somewhere! initial validation 
//create var viewObj = new 'viewName' here in this case it will be 
//var viewObj =- new ViewABC(); 
//then call viewObj.init(); 

我看着窗[類名]以及本[類名],但沒有窗口或該有我在上下文中所定義的函數類調用的對象。

請指教。

+2

ViewABC在全球範圍內?你可能必須命名空間。你需要展示更多的上下文。 – epascarello 2013-03-14 22:51:05

+0

它在全球範圍內。我如何命名空間? – curioussam 2013-03-14 22:55:46

回答

3

,而不是在全球範圍內剛剛傾倒功能,你看這個:

Views = Views || {}; // namespace initialization 
Views['ViewABC'] = function() {}; 
// ... 
var viewName = 'ViewABC'; 
var viewObj = new Views[viewName](); 

UPDATE

更改第一行:

window.Views = window.Views || {}; 

,或者如果你只使用它曾經,只是:

Views = {}; 
+0

有趣的..我試試這個....看起來像這可能工作。 – curioussam 2013-03-14 23:04:21

+0

請原諒我對JavaScript的天真,當我嘗試添加一個方法時,說初始化爲原型,它不起作用 – curioussam 2013-03-14 23:08:11

+0

Views ['ViewABC']。protoype.init = function(){ alert(「comes here!」); }; – curioussam 2013-03-14 23:08:36