gpt4 book ai didi

JavaScript 类型错误 "is not a constructor"

转载 作者:行者123 更新时间:2023-11-28 02:11:55 25 4
gpt4 key购买 nike

我有几个类来表示不同类型的表。我将类名放入字典中。我按键从字典中获取类名,并尝试使用构造“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com