从名称中实例化javascript对象

时间:2013-03-14 22:48:48

标签: javascript oop

我有点实现我自己的非常基本的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]以及这个[className],但是这两个窗口都没有我在上下文中定义的函数类。

请告知。

1 个答案:

答案 0 :(得分:3)

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

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

<强>更新

将第一行更改为:

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

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

Views = {};