簡體   English   中英

javascript類型錯誤“不是構造函數”

[英]javascript type error “is not a constructor”

我有幾個用於表示不同類型表的類。 我把類的名字放到字典里。 我通過鍵從字典中獲取類名稱,並嘗試通過使用構造“ 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);

特定

 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中的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM