2

我有点实现我自己的非常基本的 MVC 控制器,我想要的是,如果我有一个 viewName,我想实例化名为“viewName”的 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();

我查看了 window[className] 和 this[className] 但 window 或 this 都没有我在上下文中定义的函数类。

请指教。

4

1 回答 1

3

而不是仅仅在全局范围内转储函数,这又如何:

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

更新

将第一行更改为:

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

或者如果您只使用一次,只需:

Views = {}; 
于 2013-03-14T23:02:35.500 回答