我有点实现我自己的非常基本的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],但是这两个窗口都没有我在上下文中定义的函数类。
请告知。
答案 0 :(得分:3)
不是仅仅在全局范围内转储函数,而是:
Views = Views || {}; // namespace initialization
Views['ViewABC'] = function() {};
// ...
var viewName = 'ViewABC';
var viewObj = new Views[viewName]();
<强>更新强>
将第一行更改为:
window.Views = window.Views || {};
或者如果你只使用一次,只需:
Views = {};