作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有几个类来表示不同类型的表。我将类名放入字典中。我按键从字典中获取类名,并尝试使用构造“new var_with_class_name()”创建类的实例,但收到错误“TypeError:dictionary[model_name] is not a constructor”。此代码打包为 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);
最佳答案
给定
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 中的对象。
关于JavaScript 类型错误 "is not a constructor",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16971273/
我是一名优秀的程序员,十分优秀!