我有几个类来表示不同类型的表。我把类的名字放到字典中。我通过键从字典中获取类名,并尝试使用构造“new var_with_class_name()”创建类的实例,但得到错误“TypeError:dictionary [model_name]不是构造函数”。 此代码打包为require.js模块。 代码:
define("models", ["jquery", "ui"], function($, ui){
var TimeTableRow = function()
{ /* class methods definitions */ }
var WayTableRow = function()
{ /* ... */ }
var ModelsDictionary = function()
{
var self = this;
self.getModel = function(model_name)
{
var dictionary = {'time':"TimeTableRow", 'way':"WayTableRow"};
return new dictionary[model_name]();
}
}
return new ModelsDictionary();
});
来自另一个require.js模块的使用示例(我跳过所有requirejs配置和导入,只是抛出描述错误的代码行):
var tableRow = models.getModel(item_type);
答案 0 :(得分:1)
鉴于
var dictionary = {'time':"TimeTableRow", 'way':"WayTableRow"};
return new dictionary[model_name]();
dictionary[model_name]
评估为字符串(或未定义),而new ("x")()
是无意义的。相反,查找应该评估实际构造函数:
var dictionary = {'time': TimeTableRow, 'way': WayTableRow};
return new dictionary[model_name]();
请记住,函数只是JavaScript中的对象。