2012-02-11 131 views
0

我正在開發HTML 5應用程序。將對象投射到自定義類

在Javascript中我已經定義了一個自定義類和散列表實施方案:

function Card(newId, newName, newDescription) 
{ 
    this.id = newId; 
    this.name = newName; 
    this.description = newDescription; 
} 

function HashTable() 
{ 
    var hashTableItems = {}; 

    this.SetItem = function(key, value) 
    { 
     hashTableItems[key] = value; 
    } 

    this.GetItem = function(key) 
    { 
     return hashTableItems[key]; 
    } 
} 

我使用哈希表來添加卡的對象。我使用此代碼添加卡:

... 
var card = new Card(id, name, description); 

$.viacognitaspace.cards.SetItem(id, card); 
... 

我的問題是,當我打電話HashTable.GetItem,我不知道怎麼投對象返回卡類。

var cardObject = $.viacognitaspace.cards.GetItem(cardNumber); 

這裏,cardObject是未定義的。

如果我這樣做:

$('#cardName').text(cardObject.name); 

我得到一個錯誤。

我該如何解決這個問題?

+2

我們需要看到代碼的其餘部分。你是否在卡號位置添加了一些東西 - 這對我來說似乎是個問題。 – Hogan 2012-02-11 16:39:12

+0

'cardObject'未定義表示它不在散列表中,但與cast無關。如果你只「設置」卡片對象,你只會「獲取」卡片對象(或未定義) – ori 2012-02-11 16:40:33

+0

我已經更新了我的問題。現在,您可以看到如何將卡對象添加到HastTable。 – VansFannel 2012-02-11 16:42:36

回答

0

嘗試修改您的代碼如下:

$.viacognitaspace = {} /* define namespace if not already defined... */ 

var card = new Card(id, name, description); 

/* the "new" keyword creats an instance of your HashTable function 
    which allows you to reference and modify it later on... */ 
$.viacognitaspace.cards = new HashTable(); 

$.viacognitaspace.cards.SetItem(id, card); 

您還需要創建HashTable function的一個實例。

例子:

http://jsfiddle.net/3BWpM/